ASP.NET Core的多个作用域的ClaimsAuthorizationRequirement是否按预期工作?
创始人
2024-09-15 19:00:56
0

ASP.NET Core的多个作用域的ClaimsAuthorizationRequirement可以按预期工作,以下是一个包含代码示例的解决方法:

在Startup.cs文件中,添加以下代码以配置多个作用域的ClaimsAuthorizationRequirement:

using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection;

public void ConfigureServices(IServiceCollection services)
{
    // 添加身份验证服务
    services.AddAuthentication(options =>
    {
        options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
    }).AddJwtBearer(options =>
    {
        // 配置JWT Bearer认证选项
        // ...
    });

    // 添加授权服务
    services.AddAuthorization(options =>
    {
        options.AddPolicy("Policy1", policy =>
        {
            policy.Requirements.Add(new ClaimsAuthorizationRequirement("Scope1", new[] { "Value1", "Value2" }));
        });

        options.AddPolicy("Policy2", policy =>
        {
            policy.Requirements.Add(new ClaimsAuthorizationRequirement("Scope2", new[] { "Value3", "Value4" }));
        });
    });

    // 添加自定义授权处理程序
    services.AddSingleton();

    // 添加其他服务
    // ...
}

然后,创建一个自定义的AuthorizationHandler来处理授权逻辑,例如:

using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;

public class CustomAuthorizationHandler : AuthorizationHandler
{
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ClaimsAuthorizationRequirement requirement)
    {
        // 获取当前用户的Claims
        var claims = context.User.Claims;

        // 判断是否满足指定的作用域和值
        if (claims.Any(c => c.Type == requirement.ClaimType && requirement.AllowedValues.Contains(c.Value)))
        {
            context.Succeed(requirement);
        }

        return Task.CompletedTask;
    }
}

在控制器或具体的方法中,使用Authorize属性来应用不同的授权策略,例如:

[Authorize(Policy = "Policy1")]
public IActionResult Action1()
{
    // ...
}

[Authorize(Policy = "Policy2")]
public IActionResult Action2()
{
    // ...
}

通过上述配置和代码,当用户拥有指定作用域和值的Claims时,他们将被授权访问相应的方法。

相关内容

热门资讯

透视有挂(wepower有外挂... 透视有挂(wepower有外挂)wpk有修改器吗(详细辅助揭秘教程)一直真的有挂是一款可以让一直输的...
wepokeai代打!德扑ai... wepokeai代打!德扑ai智能,(wpk德州)最初真的有挂(详细透视wpk教程);玩家必备必赢加...
透视苹果版(智星德州菠萝偷偷看... 透视苹果版(智星德州菠萝偷偷看牌功能)来玩德州app外挂(详细辅助系统教程)最初真的是有挂1、超多福...
wpk德州透视辅助!微扑克到底... wpk德州透视辅助!微扑克到底有没有辅助器,(nzt德州)原来有挂(详细辅助科技教程);支持2-10...
透视私人局(德州之星有辅助挂)... 透视私人局(德州之星有辅助挂)德扑输赢概率计算器(详细辅助详细教程)原本存在有挂是一款可以让一直输的...
德扑起手牌胜率图!wpk ai... 德扑起手牌胜率图!wpk ai辅助,(aapoKer)往昔有挂(详细辅助安装教程);德扑起手牌胜率图...
透视攻略(aapoker有外挂... 透视攻略(aapoker有外挂)德州之星ai软件(详细辅助切实教程)好像是有挂1、很好的工具软件,可...
wepoke插件!微扑克有保险... wepoke插件!微扑克有保险吗,(wPk)先前真的有挂(详细透视力荐教程);人气非常高,ai更新快...
透视软件(德扑之星辅助器购买)... 透视软件(德扑之星辅助器购买)德扑之星app发牌规律(详细辅助2025新版教程)一直存在有挂(1)透...
WPK透视辅助!wpk开挂实锤... 1、WPK透视辅助!wpk开挂实锤,(wEpoke)素来有挂(详细辅助2025新版)2、进入游戏-大...