我已经建立了一个Asp.Net Core 3.1 Api应用程序,该应用程序将令牌授予用户。
用户可能具有多个角色。 JWT在“角色”声明下包含这些角色:
Role: ["Finance", "Manager"]
身份验证有效,但是我正在尝试使用以下方法设置授权:
services.AddAuthorization(options =>
{
options.AddPolicy("Admin", policy => policy.RequireRole("Admin"));
});
[我的问题是,该政策必须阅读“角色”声明的一部分“管理”的存在。如何制定在声明数组中查找元素的策略?我尝试了RequireClaim,也尝试按照policy.RequireClaim(“ Role”)。RequireClaim(“ Admin”)将其链接无济于事。
我通过此重载解决了它:
services.AddAuthorization(options =>
{
options.AddPolicy("Admin", policy => policy.RequireClaim("Roles", "Admin"));
});