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