.NET Core 2如何设置默认授权?自定义需求简化[Authorize]使用
这问题我之前帮人处理过,其实只要把你的自定义授权需求配置为默认授权策略,就能实现只用[Authorize]特性的效果,具体步骤如下:
1. 在服务配置中设置默认授权策略
在你的Program.cs(.NET 6+)或者Startup.cs(.NET 5及更早版本)里,找到配置授权服务的代码块,把自定义需求添加到默认策略中:
// .NET 6+ Program.cs示例 builder.Services.AddAuthorization(options => { // 构建默认授权策略,加入你的自定义需求 options.DefaultPolicy = new AuthorizationPolicyBuilder() .AddRequirements(new MyAuthorizationRequirement()) .Build(); });
如果你还需要指定身份验证方案(比如JWT、Cookie等),可以在策略构建时加上对应的方案:
using Microsoft.AspNetCore.Authentication.JwtBearer; builder.Services.AddAuthorization(options => { options.DefaultPolicy = new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme) .AddRequirements(new MyAuthorizationRequirement()) .Build(); });
2. 直接使用[Authorize]特性即可
配置完成后,你在控制器或Action上只需要标记[Authorize],系统就会自动应用包含你的MyAuthorizationRequirement的默认策略,不用再写[Authorize("MyAuthorizationRequirement")]了:
[Authorize] public class MyProtectedController : ControllerBase { // 你的接口逻辑 }
额外说明
如果之后有部分接口需要使用其他授权规则,依然可以通过[Authorize(Policy = "OtherCustomPolicy")]来指定特定策略,不会和默认策略冲突。
内容的提问来源于stack exchange,提问作者Mortalus
相关产品推荐
相关产品推荐

