具有多个声明的授权策略

Ste*_*bob 5 asp.net authorization claims-based-identity .net-core asp.net-core

我创建了多个授权策略,每个策略都有1个声明,进行角色检查,如下所示:

options.AddPolicy("SuperAdminPolicy", policy => policy.RequireClaim(ClaimTypes.Role, "SuperAdmin"));
Run Code Online (Sandbox Code Playgroud)

一切正常.

但是,我现在正处于我想要检查2种不同类型的声明的位置,例如我想确保用户具有特定的角色声明(如上所述),但我还想检查完全的值不同的主张(如名字).为了澄清,我想说"用户必须在角色'x'并且必须具有'bob'的名字声明值".

我无法弄清楚如何实现这一目标(而且我相信它可能非常直接).

有人能指出我正确的方向吗?

谢谢.

Par*_*Rao 10

我们实际上可以像这样链接RequireClaim.

services.AddAuthorization(option => {

            option.AddPolicy("SuperAdmin policy",
            policy =>  policy.RequireClaim(ClaimType.Role,"SuperAdmin")
                              .RequireClaim(ClaimType.Name,"Bob"));
                             });
Run Code Online (Sandbox Code Playgroud)