我想在 ASP.NET Core 3.1 中构建基于权限的授权。
我在 Startup.cs
中实现了策略,但我也不想对所有策略使用自定义需求处理程序。因为我的条件很简单。例如,如果用户具有 Admin
角色,则不要检查和授权,如果用户具有 User
角色,则检查 Startup.cs 中的关系声明以获取策略。
我在 Startup.cs 中实现如下:
services.AddAuthorization(options =>
{
options.AddPolicy("GetDefinition",
policy => policy.RequireRole("Admin", "User")
.RequireClaim("CanGetDefinition"));
});
如果用户在策略创建中具有管理员角色,如何跳过检查声明?
最佳答案
也许是基于 using-a-func-to-fulfill-a-policy 的东西:
services.AddAuthorization(options =>
{
options.AddPolicy("GetDefinition",
policy => policy.RequireAssertion(
(context) => {
return context.User.IsInRole("Admin") ||
(
context.User.IsInRole("User") &&
context.User.HasClaim(p => p.Type == "CanGetDefinition")
);
}
});
关于c# - 创建不检查管理员角色声明的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60025588/