asp.netcore设置两个登录路径
问题描述:
我正在为宽度为asp.net核心,并且希望设置两个用于授权的登录路径:用户的'/ account/login'和管理员的'/ Admin/Account/Login' 'Admin'是一个区域名称,但不知道什么是错的宽度。 这里是我在startup.cs代码:asp.netcore设置两个登录路径
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "UserAuthScheme",
AutomaticAuthenticate = true,
AutomaticChallenge = true,
CookieName = ".AUTOUSERAUTHCOOKIE",
LoginPath = "/Account/Login",
CookieHttpOnly = true
});
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "AdministratorAuthScheme",
AutomaticAuthenticate = true,
AutomaticChallenge = true,
CookieName = ".AUTOADMINAUTHCOOKIE",
LoginPath = "/Admin/Account/Login",
CookieHttpOnly = true
});
...
}
AdministratorController.cs:
[Authorize(Roles ="Super",ActiveAuthenticationSchemes ="AdministratorAuthScheme")]
public async Task<IActionResult> Edit(string id)
{
if (string.IsNullOrEmpty(id))
{
return new EmptyResult();
}
.....
}
当用户没有一个 “超级” 的作用,它只是跳转到“/帐号/存取遭拒RETURNURL =%2FAdmin%2FAdministrator%2FEdit”。
角色:用户为普通用户,“管理员”为管理员,“超级”为可以修改或创建管理员的超级管理员。 任何人都可以帮助我或给一个参考链接? ,对不起我的英文不好:)
答
使用OnApplyRedirect
自定义逻辑的操作。
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/account/login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)),
OnApplyRedirect = ctx =>
{
if (ctx.Request.Path.StartsWithSegments(new PathString("/admin")))
ctx.Response.Redirect("/admin/account/login?ReturnUrl=" + HttpUtility.UrlEncode(ctx.Request.Path.ToString()));
else
ctx.Response.Redirect(ctx.RedirectUri);
}
},
});
我正在搜索和搜索和搜索...,所以,我仍在搜索...... :( – gsias