C# 在运行时重置授权策略

C# 在运行时重置授权策略,c#,asp.net,.net-core,jwt,asp.net-core-webapi,C#,Asp.net,.net Core,Jwt,Asp.net Core Webapi,我正试图降低我的JWT令牌的大小,它在内部按用户角色获取声明。为此,我创建了与声明名称同名的策略,并在策略注册中设置了policy.RequireRole属性,如下所示: public static IServiceCollection RegisterPolicies(this IServiceCollection services, IClaimApplication claimApplication) { var applicationClaim

我正试图降低我的JWT令牌的大小,它在内部按用户角色获取声明。为此,我创建了与声明名称同名的策略,并在策略注册中设置了
policy.RequireRole
属性,如下所示:

 public static IServiceCollection RegisterPolicies(this IServiceCollection services, IClaimApplication claimApplication)
        {

            var applicationClaim = new ApplicationClaim();

            services.AddAuthorization(async options =>
            {
                var ClaimList = await claimApplication.GetList(applicationClaim);
                foreach (var item in ClaimList)
                {
                    //Commented this code for Testing in development env:

                    //if (item.ClaimType == "Inventory.Get")

                    if (item.ClaimType == "some claim")
                    {

                        options.AddPolicy(item.ClaimCode, policy => policy.RequireRole("admin","test"));

                    }
                    else
                    {
                        options.AddPolicy(item.ClaimCode, policy => policy.RequireClaim(item.ClaimCode));
                    }
                }
            });

            return services;
        }
这很好,因为它降低了令牌大小,因为现在我只需要返回用户角色,并且我将策略与数据库中具有某些角色的声明绑定

此调用是通过数据库注册的,但问题是,由于此策略仅在应用程序启动时注册,因此对该用户角色声明的任何添加在应用程序启动之前都不会生效

我需要根据数据库中的更改动态地重置一些策略,但没有找到可能对我有帮助的东西。有人能给我指一下正确的方向吗


我也无法使此用例与自定义策略要求一起工作

您能分享一下您是如何强制执行此策略的吗?@MkrtichMazmanyan
选项。AddPolicy
事情正在做它不是这样,您需要使用
Authorize
属性或
AuthorizeFilter
@MkrtichMazmanyan我正在做,这不是我的问题,我想重置策略,比如说添加更多角色以要求策略的角色属性查看策略的自定义,您可以在处理程序中动态加载角色并创建动态策略。