具有多个声明的授权策略

Authorization Policy With Multiple Claims

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

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

一切正常。

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

我不太明白如何实现这一点(而且我确信它可能非常简单)。

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

谢谢。

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

services.AddAuthorization(option => {

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

我对这个 post 做了一些额外的研究,因为我正在寻找非常相似的东西。我注意到除了 RequireClaim 之外还有 policy.RequireRole 和 policy.RequireUser。因此,策略可能需要声明、角色、用户或任何组合。