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

如何创建满足至少一个声明的Blazor授权策略?

Blazor 实现“满足任一声明即通过”的授权策略

要实现用户拥有Admin=true或Moderator=true任一声明即可通过验证的授权策略,你可以使用RequireAssertion方法自定义验证逻辑,替代默认的RequireClaim(后者是且的关系)。

修改后的代码如下:

builder.Services.AddAuthorization(options =>
{
    options.FallbackPolicy = options.DefaultPolicy;

    options.AddPolicy("AdminsAndMods", policy =>
    {
        policy.RequireAssertion(context =>
            context.User.HasClaim(c => 
                (c.Type == "Admin" && c.Value == "true") || 
                (c.Type == "Moderator" && c.Value == "true")
            )
        );
    });
});

代码说明

  • RequireAssertion允许传入自定义验证逻辑委托,只要委托返回true,策略就会通过。
  • 这里的逻辑是检查用户是否拥有Admin且值为true的声明,或者拥有Moderator且值为true的声明,满足任一条件即可通过授权。

配置完成后,在组件或控制器上使用[Authorize(Policy = "AdminsAndMods")]或者<AuthorizeView Policy="AdminsAndMods">时,用户只要符合其中一个声明要求就能访问受保护资源。

内容的提问来源于stack exchange,提问作者andrea

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:38:15