1

我已经创建了多个授权策略,每个组中1个要求,执行角色检查,像这样:授权策略拥有多个声明

options.AddPolicy("SuperAdminPolicy", policy => policy.RequireClaim(ClaimTypes.Role, "SuperAdmin")); 

这一切工作正常。

但是,我现在正要检查两种不同类型的索赔,例如,我想确保用户具有特定的角色声明(如上所述),但我也想检查完全不同的声明(例如名字)的值。为了澄清,我想说的是,“用户必须在角色'x'中,并且必须具有'bob'的名字声明值”。

我不能完全弄清楚如何实现这一点(我相信它可能是非常简单的)。

有人可以指点我正确的方向吗?

感谢。

回答

3

我们可以像这样链接RequireClaim。

services.AddAuthorization(option => { 

      option.AddPolicy("SuperAdmin policy", 
      policy => policy.RequireClaim(ClaimType.Role,"SuperAdmin") 
           .RequireClaim(ClaimType.Name,"Bob")); 
          });