【问题标题】:.Net Core 3 Identity - User in Role not working.Net Core 3 Identity - 角色中的用户不起作用
【发布时间】:2020-04-03 22:14:57
【问题描述】:

请任何人提供建议,因为我正在努力使用具有 ASP 身份和 SQL 的新 .Net Core 3.0 应用程序,它的行为就像用户不是角色的成员一样。我看过但看不到任何类似的帖子 - 我最初在这里关注了文档:https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles?view=aspnetcore-3.1

我已经创建了角色并向角色添加了一个用户:

我已确保 .addroles 已添加到 ConfigureServices 中,并且我还尝试将其作为 startup.cs 中的策略应用

 public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("ConnectionString")));
        services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
            .AddRoles<IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>();

       
        services.AddControllersWithViews();

        services.AddTransient<IEmailSender, EmailSender>();
        services.Configure<AuthMessageSenderOptions>(Configuration);

        services.ConfigureApplicationCookie(o => {
            o.ExpireTimeSpan = TimeSpan.FromDays(2);
            o.SlidingExpiration = true;              
        });

        services.Configure<DataProtectionTokenProviderOptions>(o =>
   o.TokenLifespan = TimeSpan.FromHours(3));

        services.AddRazorPages();
                   

        services.AddAuthorization(options =>
        {
            options.AddPolicy("RequireAdministratorRole",
                 policy => policy.RequireRole("System Administrators"));
        });


    }

在配置中我也参考过:

app.UseAuthorization();

如果我进一步看,我可以看到该帐户确实在注册它是该角色的成员:

调试图片:

并通过在控制器中尝试以下两次尝试:

  [Authorize(Policy = "RequireAdministratorRole")]
    public IActionResult Privacy()
    {
        return View();
    }


  [Authorize (Roles = "System Administrators")]
    public IActionResult Privacy()
    {
        return View();
    }

我不断收到拒绝访问的视图:

被拒绝的观点:

我不知道为什么这不起作用,请任何人提供建议?

【问题讨论】:

    标签: .net-core identity roles


    【解决方案1】:

    您的角色“系统管理员”中有一个空格。

    角色不能有空格,请尝试使用“SystemAdministrator”。

    【讨论】:

    • 感谢您的回复 Josh,我已经删除了角色名称中的空格,但遗憾的是这个问题仍然存在
    • 好吧,重启 VS 后确实有效!再次感谢乔希
    猜你喜欢
    • 2017-06-25
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多