问题描述
在我的 ASP.NET Core MVC 应用程序中,我想将 AccountController
重命名为其他名称(“登录”、“授权”,具体名称无关紧要)。
但是当我这样做时,该站点仍然尝试路由到 /Account/Login
,即使没有这样的东西。我需要做什么才能阻止这种情况并让它使用正确的路线?
我在 options.LoginPath
中设置了 services.ConfigureApplicationCookie
,但这似乎并没有改变。
这是我的配置设置:
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Path = "/";
options.AccessDeniedpath = new PathString($"/{nameof(Errors)}/{nameof(Errors.Access_Denied)}");
options.ExpireTimeSpan= TimeSpan.FromMinutes(5); // note: testing to see if this enforces logout based on minutes of idle time
options.SlidingExpiration = true;
options.LoginPath = new PathString($"/{nameof(Authorization.Authorization)}/{nameof(Authorization.Authorization.Login)}");
});
有什么建议吗? (如果他们让你感到困惑,请忽略电话名称)
解决方法
在具有自定义身份验证的 Core 3.1 项目中,我在 Startup#ConfigureServices 中像这样指定 LoginPath
和 LogoutPath
:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.Cookie.Name = ...
options.Cookie.Path = "/";
options.LoginPath = "/Login";
options.LogoutPath = "/Logout";
options.AccessDeniedPath = ...;
});