C# 创建一个不包含';t检查管理员角色的声明

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",

我想在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"));
});
如果用户在策略创建中具有管理员角色,我如何可以跳过检查声明?

可能基于以下内容:


您能否修复为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")
                        );
             }
});