在多个策略方案中选择默认授权策略



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

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"(]。

有没有办法将其中一个设置为默认,那么,当我想使用它时,我只能使用 [授权],如果我想使用另一个,我会指定它?

例如:

将"持有者">

设置为默认值,那么,当使用持有者方案时,我只需要设置[授权],但是如果我想使用"ApiKey",我通过使用[授权(策略="ApiKey"(]指定它。

找不到任何示例。

DefaultPolicy 属性允许您设置 Default:

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");
            });

在这种情况下,当我想使用"持有者"方案时,我只需要使用[Authorization]

最新更新