在我的例子中,用户可能有多个角色,例如,用户可能是管理员和SysAdmin。
在admin角色中,他具有claim ("Employee.Add", "Allow"),在SysAdmin角色中,他具有claim ("Employee.Add", "Deny")。在我的示例中,当尝试添加员工时,此用户必须经过授权。
如何使用策略来实现这一点?
发布于 2021-11-22 07:24:13
根据您的描述,我建议您尝试使用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。
https://stackoverflow.com/questions/70052905
复制相似问题