自定义url用于身份验证
本文关键字:身份验证 用于 url 自定义 | 更新日期: 2023-09-27 18:13:52
目前我有一个项目在ASP。. NET Core的一个简单的认证。
主代码是用Yeoman和generator-aspnet生成的。
生成的代码有一个Account Controller来验证用户。
每次用户需要登录时,asp.net将用户重定向到http://domain/Account/Login。
因为这个网站的主要语言不是英语,所以我想把url改成这样:http://domain/usuarios/login
因此,在Account Controller中,我在类的顶部添加了一个Route注释:[Authorize]
[Route("usuarios")]
public class AccountController : Controller
{
...
[HttpGet]
[AllowAnonymous]
[Route("login")]
public IActionResult Login(string returnUrl = null)
{
...
}
[HttpPost]
[AllowAnonymous]
[ValidadeAntiForgeryToken]
[Route("login")]
public async Task<IActionResult> Login(LoginViewModel model, string returlUrl = null)
{
...
}
}
现在,如果我手动转到http://domain/usuarios/login,就会出现登录页面。但是,如果我去一个需要身份验证的页面,ASP。. NET Core仍然重定向到http://domain/Account/Login并返回404错误。
检查项目。在dependencies部分,我看到package:
"dependencies": {
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
...
}
打开Startup类,我在ConfigureServices和Configure方法中看到代码app.UseIdentity();
,但没有关于app.UseCookieAuthentication()
的代码
下面是Configure方法的一部分:
app.UseStaticFiles();
app.UseIdentity();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
那么,我在哪里更新代码重定向到正确的url?
PS:生成的代码很像https://shellmonger.com/2015/04/04/asp-net-vnext-identity-part-2-the-login-process/如果您正在使用基于cookie的身份验证,请这样更新您的startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookieAuthenticationOptions>(options =>
{
options.LoginPath = new PathString("/usuarios/login");
});
}
需要在ConfigureServices
方法中配置IdentityOptions
,如下所示:
services.Configure<IdentityOptions>(opt =>
{
opt.Cookies.ApplicationCookie.LoginPath = new PathString("/usuarios/login");
});