具有多个声明的授权策略

时间:2017-03-18 13:45:44

标签: asp.net asp.net-core authorization .net-core claims-based-identity

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

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

一切正常。

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

的名字声明值

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

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

感谢。

2 个答案:

答案 0 :(得分:9)

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

services.AddAuthorization(option => {

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

答案 1 :(得分:0)

由于我正在寻找非常相似的内容,因此我对此帖子进行了一些其他研究。我注意到除了RequireClaim之外还有一个policy.RequireRole和policy.RequireUser。因此,策略可以要求声明,角色,用户或任何组合。