【发布时间】:2021-04-13 03:05:19
【问题描述】:
我有一个用户有以下声明:
role: ["Admin","Tester"]
我希望只能通过角色声明值“Admin”访问控制器方法。 为此,我添加了这样的政策:
services.AddAuthorization(options => {
options.AddPolicy("Admin", policy => policy.RequireClaim("role", "Admin"));
});
并在我的控制器方法之上添加了[Authorize(Policy = "Admin")] 属性。
很遗憾,当启动应用程序时,用户没有访问权限。
如果我从他的声明中删除角色 Tester,以便他只有管理员 (role: "Admin") 并且不再是数组,那么他确实具有访问权限。
据我了解,该政策应该像“包含”一样检查,但不知何故这似乎不起作用。
我做错了吗?
【问题讨论】:
-
你试过
policy.RequireRole() -
好电话,我还没试过。不幸的是它仍然不起作用:-(
-
这可能值得一读referbruv.com/blog/posts/…
-
您能否向我们展示您如何向用户添加声明,代码如下:
new Claim(ClaimTypes.Role, "Admin", ClaimValueTypes.String);
标签: c# .net asp.net-core jwt identityserver4