Asp.net core JWT和基于策略的授权在Asp.NETCore3.1中同时工作

Asp.net core JWT和基于策略的授权在Asp.NETCore3.1中同时工作,asp.net-core,authentication,authorization,asp.net-identity,jwt-auth,Asp.net Core,Authentication,Authorization,Asp.net Identity,Jwt Auth,我想用JWT承载和基于策略的身份验证同时对用户进行身份验证 出于某些原因,用户只需使用JWT进行身份验证,然后我将检查他们的角色。他们的角色存储在项目数据库中。因此: 检查jwt令牌以授权用户 然后检查项目数据库中的用户角色。(用户角色不保存在JWT令牌中) 我读过这篇文档,但它的工作原理类似于“或”,只需检查一下这个身份验证方案,但我需要“和”的顺序 Role_Based : services.AddAuthorization(options => { options.Ad

我想用JWT承载和基于策略的身份验证同时对用户进行身份验证

出于某些原因,用户只需使用JWT进行身份验证,然后我将检查他们的角色。他们的角色存储在项目数据库中。因此:

  • 检查jwt令牌以授权用户
  • 然后检查项目数据库中的用户角色。(用户角色不保存在JWT令牌中)
  • 我读过这篇文档,但它的工作原理类似于“或”,只需检查一下这个身份验证方案,但我需要“和”的顺序

    Role_Based : 
    
    services.AddAuthorization(options =>
    {
        options.AddPolicy("Over18", policy =>
        {
            policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
            policy.RequireAuthenticatedUser();
            policy.Requirements.Add(new MinimumAgeRequirement());
        });
    });
    
    JWT :
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.Audience = "https://localhost:5000/";
                options.Authority = "https://localhost:5000/identity/";
            });
    
    
    我该怎么办?

    这里有一个关于的链接,它可以设置策略、方案和角色。