如何在 ASP.NET Identity 中获取 claims value 的最大值?
How to get max value of claims value in ASP.NET Identity?
在我的例子中,用户可能具有多个角色,例如用户可能是管理员和系统管理员。
在管理员角色中,他有一个声明 ("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
更多的细节,你可以参考这个article。
在我的例子中,用户可能具有多个角色,例如用户可能是管理员和系统管理员。
在管理员角色中,他有一个声明 ("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
更多的细节,你可以参考这个article。