如果在使用授权策略时ASP.NET Core 5未能检测到声明,则可以通过以下解决方法进行修复:
确认声明的正确性 确认声明名和声明值是否正确。可以通过查看令牌或调试程序来确定。例如,如果声明名是“role”而不是“roles”,则策略将无法检测到声明。
在Startup.cs 文件中添加声明类型 在 Startup.cs 文件的 ConfigureServices 方法中添加声明类型:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { // ... options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = Configuration["Jwt:Issuer"], ValidAudience = Configuration["Jwt:Audience"], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"])), NameClaimType = ClaimTypes.Name, //添加声明类型 RoleClaimType = ClaimTypes.Role //添加声明类型 }; });
services.AddAuthorization(options => { options.AddPolicy("AdminOnly", policy => policy.RequireClaim(ClaimTypes.Role, "admin")); });
[Authorize(Policy = "AdminOnly")]
public async Task
以上是一些基本解决方法,可根据实际情况进行调整。