C# 创建一个不包含';t检查管理员角色的声明
我想在ASP.NET Core 3.1中构建基于权限的授权。 我在我的C# 创建一个不包含';t检查管理员角色的声明,c#,asp.net-core,C#,Asp.net Core,我想在ASP.NET Core 3.1中构建基于权限的授权。 我在我的Startup.cs中实现了策略,但我不想对所有策略使用自定义需求处理程序。因为我的情况很简单。例如,如果用户具有角色Admin不检查和授权,如果用户具有user角色,则在Startup.cs上检查关系声明以获取策略 我在Startup.cs上实现如下: services.AddAuthorization(options => { options.AddPolicy("GetDefinition",
Startup.cs
中实现了策略,但我不想对所有策略使用自定义需求处理程序。因为我的情况很简单。例如,如果用户具有角色Admin
不检查和授权,如果用户具有user
角色,则在Startup.cs上检查关系声明以获取策略
我在Startup.cs上实现如下:
services.AddAuthorization(options =>
{
options.AddPolicy("GetDefinition",
policy => policy.RequireRole("Admin", "User")
.RequireClaim("CanGetDefinition"));
});
如果用户在策略创建中具有管理员角色,我如何可以跳过检查声明?可能基于以下内容:
您能否修复为context.User.HasClaim(p=>p.Type==“CanGetDefinition”)的clain检查。那么这就是正确的解决方案了。很抱歉,我没有现场查看。
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")
);
}
});