我创建了多个授权策略,每个策略都有1个声明,进行角色检查,如下所示:
options.AddPolicy("SuperAdminPolicy", policy => policy.RequireClaim(ClaimTypes.Role, "SuperAdmin"));
一切正常。
但是,我现在要检查两种不同类型的声明,例如:我想确保用户具有特定的角色声明(如上所述),但我还想检查完全不同的声明(例如名字)的值。为了澄清,我想说一些像"用户必须处于角色' x'并且必须具有' bob'"。
的名字声明值我无法弄清楚如何实现这一目标(而且我确定它可能非常直接)。
有人能指出我正确的方向吗?
感谢。
答案 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。因此,策略可以要求声明,角色,用户或任何组合。