Я пытаюсь перенаправить на другой URL-адрес для входа в ASP.NET MVC6
Метод входа в мой контроллер учетной записи имеет атрибут Route
для изменения URL-адреса.
[HttpGet]
[AllowAnonymous]
[Route("login")]
public IActionResult Login(string returnUrl = null)
{
this.ViewData["ReturnUrl"] = returnUrl;
return this.View();
}
При попытке получить доступ к неустранимой странице я перенаправлен на неверный URL-адрес, он должен быть только
/login
, но вместо этого я получаюhttp://localhost/Account/Login?ReturnUrl=%2Fhome%2Findex
Я настроил путь аутентификации cookie следующим образом:
services.Configure<CookieAuthenticationOptions>(opt =>
{
opt.LoginPath = new PathString("/login");
});
Я добавил фильтр по умолчанию, чтобы гарантировать, что все URL-адреса требуют аутентификации по умолчанию.
services.AddMvc(
options =>
{
options.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build()));
});
Я проверил, что url /login
действительно загружает страницу входа, тогда как /account/login
нет, как и ожидалось.
edit: Я оставил маршруты как есть (кроме изменения контроллера и действия по умолчанию)
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Site}/{action=Site}/{id?}");
});