2

[Authorize(Roles = "Admin")]不适合我。

startup.cs( ConfigureServices) 中,我有:

    services.AddDbContextPool<AppDbContext>(
            options => options.UseSqlServer(Configuration.GetConnectionString("defaultCon")));

    services.AddAuthentication().AddCookie();

    services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddRoles<IdentityRole>()
            .AddRoleManager<RoleManager<IdentityRole>>()
            .AddDefaultTokenProviders()
            .AddEntityFrameworkStores<AppDbContext>()
            .AddErrorDescriber<CustomIdentityErrorDescriber>()
            .AddClaimsPrincipalFactory<MyUserClaimsPrincipalFactory>();

Configure我的方法中:

    app.UseStaticFiles();
    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();
    app.UseSession();

    app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Employee}/{action=list}/{id?}")
                .RequireAuthorization();
        });

我不知道我的错误是什么。

4

2 回答 2

0

看起来您的代码一切正常。顺便说一句,只需启用 SSL,我认为它应该可以正常工作。

于 2021-06-21T08:43:15.740 回答
0

如果您使用的是基于 JWT 的授权,那么我们需要在声明类中添加角色,如下所示:

         var claims = new List<Claim> {
                new Claim("role", "Admin") // your person logged in role                                
         };

在将角色添加到声明类之后,授权标签应该会自动工作。

于 2021-06-21T04:57:26.983 回答