Asp.net web api 如果将策略添加到“授权”属性,则将忽略TokenValidationParameters

Asp.net web api 如果将策略添加到“授权”属性,则将忽略TokenValidationParameters,asp.net-web-api,jwt,bearer-token,asp.net-core-2.0,Asp.net Web Api,Jwt,Bearer Token,Asp.net Core 2.0,我使用的是AspNetCore.2.0 我有一个使用Authorize属性的控制器,如下所示: [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme] 当我传递JWT令牌时,它会按预期失败,因为它已过期。但是,当我添加下面这样的策略时,它总是以200通过。我还是应该拿到401,因为这是过期的代币,对吧?我可能做错了什么 [Authorize(AuthenticationSchemes = JwtBea

我使用的是AspNetCore.2.0

我有一个使用Authorize属性的控制器,如下所示:

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme]
当我传递JWT令牌时,它会按预期失败,因为它已过期。但是,当我添加下面这样的策略时,它总是以200通过。我还是应该拿到401,因为这是过期的代币,对吧?我可能做错了什么

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Policy = "Over21")]
下面是我的令牌验证参数。请注意,添加策略不仅会影响过期时间,还可能是任何参数

        .AddJwtBearer(cfg =>
        {
            cfg.RequireHttpsMetadata = false;
            cfg.SaveToken = true;

            cfg.TokenValidationParameters = new TokenValidationParameters()
            {
                RequireExpirationTime = true,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = false,
                ValidateIssuer = false,
                ValidateAudience = false,
                ValidIssuer = "https://localhost",
                ValidAudience = "https://localhost",
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("someveryveryveryverylongkey")),                    
                ClockSkew = TimeSpan.Zero

            };
        });

当我添加两个Authorize属性[Authorize(authorization(authorizationschemes=JwtBearerDefaults.authorizationscheme)][Authorize(Policy=“Over21”)]时,ok似乎起作用。在一个Authorize属性中粘贴两个东西可能会导致它成为OR。认证方案或政策21。将它们放在两个Authorize属性中会生成一个AND
ValidateIssuer=false
表示
ValidIssuer=”https://localhost“
被忽略。您确定要这样做吗?当我添加两个Authorize属性[Authorize(authorization(authorizationschemes=JwtBearerDefaults.authorizationscheme)][Authorize(Policy=“Over21”)]确定在一个Authorize属性中粘贴两个东西可能会导致它成为OR时,ok似乎起作用。认证方案或政策21。将它们放在两个Authorize属性中会生成一个AND
ValidateIssuer=false
表示
ValidIssuer=”https://localhost“
被忽略。你确定你会想要吗?