C# 在运行时重置授权策略
我正试图降低我的JWT令牌的大小,它在内部按用户角色获取声明。为此,我创建了与声明名称同名的策略,并在策略注册中设置了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
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我正在做,这不是我的问题,我想重置策略,比如说添加更多角色以要求策略的角色属性查看策略的自定义,您可以在处理程序中动态加载角色并创建动态策略。