具有多个声明的授权策略
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。因此,策略可能需要声明、角色、用户或任何组合。
我创建了多个授权策略,每个都有 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。因此,策略可能需要声明、角色、用户或任何组合。