Вот мой Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseOptions();
app.UseStaticFiles();
app.UseRewriter(new RewriteOptions().AddIISUrlRewrite(env.ContentRootFileProvider, "urlRewrite.config"));
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Account}/{action=SignIn}");
});
}
Когда пользователь запускает веб-сайт, он отправляется на страницу входа, которая принимает свое имя пользователя и пароль, а затем вызывает действие контроллера как таковое:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, set lockoutOnFailure: true
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
_logger.LogInformation(1, "User logged in.");
//send to New Page
return RedirectToAction("Index", "New");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Это действительно так просто. Новый Контроллер - Удар, и Действие Индекса отправляет пользователя к правильному Представлению. Давайте просто скажем, что Action не выполняет проверку и просто возвращает связанный View.
Если я добавлю декоратор [Authorize] к этому действию, я перенаправлюсь на страницу входа с «? ReturnUrl = New / Index» в конце.
Наконец, если я просто войду в WebsiteUrl / New / Index без входа в систему, я могу загрузить View.
Чего мне не хватает? Как будто я добавил страницу входа без реальной функциональности.