Authentication 在多个策略场景中设置默认授权策略

Authentication 在多个策略场景中设置默认授权策略,authentication,.net-core,authorization,Authentication,.net Core,Authorization,我正在为我的应用程序设置两个可能的策略 services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)

我正在为我的应用程序设置两个可能的策略

services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                    .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                    .RequireAuthenticatedUser().Build());

                auth.AddPolicy("apiKey", policy =>
                    policy.Requirements.Add(new ApiKeyRequirement()));
            });
它强制在调用我的控制器时使用[Authorize(Policy=“Bearer”)]或[Authorize(Policy=“ApiKey”)]

有没有办法将其中一个设置为默认值,那么,当我想使用它时,我可以只使用[Authorize],如果我想使用另一个,我可以指定它

例如:

将“Bearer”设置为默认值,那么,在使用Bearer方案时,我只需要设置[Authorize],但是如果我想使用“ApiKey”,我可以使用[Authorize(Policy=“ApiKey”)]来指定它


找不到任何示例。

使用
DefaultPolicy
属性可以设置默认值:

services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                    .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                    .RequireAuthenticatedUser().Build());

                auth.AddPolicy("apiKey", policy =>
                    policy.Requirements.Add(new ApiKeyRequirement()));

                auth.DefaultPolicy = auth.GetPolicy("Bearer");
            });
在这种情况下,当我想使用“承载”方案时,我只需要使用
[授权]