You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 2如何设置默认授权?自定义需求简化[Authorize]使用

如何让[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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:37:44