繁体   English   中英

没有身份的 ASP.NET Core 2.0 Cookie 身份验证不指向 LoginPath

[英]ASP.NET Core 2.0 Cookie Authentication without identity not directing to LoginPath

从 ASP.NET Core 1.1 移动到 2.0 并且存在 cookie 身份验证问题。

应用程序不会遵循LoginPath并直接转到AccessDeniedPath

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
        .AddCookie(options =>
        {
            options.LoginPath = new PathString("/Account/Login/");
            options.AccessDeniedPath = new PathString("/Account/Forbidden/");
        });

    services.AddAuthorization(options =>
    {
        options.AddPolicy(Constants.CONST_POLICY_SUPERADMIN, policy => policy.RequireRole(Constants.CONST_ROLE_SUPERADMIN));
        options.AddPolicy(Constants.CONST_POLICY_ADMIN, policy => policy.RequireRole(Constants.CONST_ROLE_ADMIN, Constants.CONST_ROLE_SUPERADMIN));
        options.AddPolicy(Constants.CONST_POLICY_DIR, policy => policy.RequireRole(Constants.CONST_ROLE_ADMIN, Constants.CONST_ROLE_SUPERADMIN, Constants.CONST_ROLE_DIR));
        options.AddPolicy(Constants.CONST_POLICY_HoD, policy => policy.RequireRole(Constants.CONST_ROLE_ADMIN, Constants.CONST_ROLE_SUPERADMIN, Constants.CONST_ROLE_DIR, Constants.CONST_ROLE_HoD));
        options.AddPolicy(Constants.CONST_POLICY_STAFF, policy => policy.RequireRole(Constants.CONST_ROLE_ADMIN, Constants.CONST_ROLE_SUPERADMIN, Constants.CONST_ROLE_DIR, Constants.CONST_ROLE_HoD, Constants.CONST_ROLE_STAFF));
    });
}

这根本不会重定向到登录方法。 在测试时,我将AccessDeniedPath更改为指向 Login 方法,并且它可以很好地记录用户。

完全不明白为什么LoginPath不指向Login方法。

将[Authorize]添加到您要强制从其重定向的控制器。

例如

using Microsoft.AspNetCore.Authorization;

 [Authorize]
public class HomeController : Controller
{ ....

根据文档 ,您首先需要在ConfigureServices中添加Identity。 就像是:

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{
    // Signin settings
    options.SignIn.RequireConfirmedEmail = true;
    options.SignIn.RequireConfirmedPhoneNumber = false;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM