如何在ASP.NET Identity中获取声明值的最大值



在我的情况下,用户可能扮演多个角色,例如用户可能是Admin和SysAdmin。

在管理员角色中,他有一个声明("Employee.Add", "Allow"),在系统管理员角色中有一个索赔("Employee.Add", "Deny")。在我的情况下,当尝试添加员工时,必须授权该用户。

如何使用策略获得此信息?

根据您的描述,我建议您可以尝试使用asp.net核心策略的RequireAssertion方法来实现您的需求。

更多详细信息,您可以参考以下代码:

services.AddAuthorization(options => {
options.AddPolicy("TestAccess", policy => policy.RequireAssertion(context =>
{
// you could modify below codes due to your requirement
var re= context.User.Claims.Where(x => x.Type == "Employee.Add").First();
if (re != null)
{
if (re.Value == "Allow")
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}));
});

然后在控制器中,您可以使用以下代码:

[Authorize(Policy = "TestAccess")]
public class VacationController : Controller

更多详细信息,您可以参考本文。

最新更新