目前,我在ASP.NET Core中有一个带有简单身份验证的项目。
主要代码是由Yeoman和generator-aspnet生成的。
生成的代码有一个帐户控制器来验证用户。
每次用户需要登录时,asp.net都会将用户重定向到http://domain/Account/Login。
因为这个网站的主要语言不是英文,所以我喜欢将网址更改为: 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错误。
检查project.json,我在依赖项部分看到了包:
"dependencies": {
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
...
}
打开Startup课程,我在配置服务和配置方法中看到了代码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/
非常相似答案 0 :(得分:3)
如果您使用基于cookie的身份验证,请更新您的startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookieAuthenticationOptions>(options =>
{
options.LoginPath = new PathString("/usuarios/login");
});
}
答案 1 :(得分:1)
您需要在IdentityOptions
方法中配置ConfigureServices
,如下所示:
services.Configure<IdentityOptions>(opt =>
{
opt.Cookies.ApplicationCookie.LoginPath = new PathString("/usuarios/login");
});