【发布时间】:2020-06-22 16:18:53
【问题描述】:
在我当前的 Web 应用程序中,我使用声明“customRole”(加上它的值)对用户进行身份验证,并使用属性“Authorize”来允许/拒绝对操作的访问。 一切正常,直到用户作为同一类型的多个声明,访问一直被拒绝,并且在调试时我注意到只为“customRole”类型创建了一个声明,并且它的值更改为连接字符串两个值。
我期待两个相同类型的声明,但每个声明的值不同。 我将 ASPNET.Core 3.0 与 IdentityServer4 一起使用,但根据 here 所写的内容,IdentityServer4 不是问题。
例如,我在 IdentityServer 端添加这样的声明:
uClaims.Add(new Claim("customRole", "superadmin"));
uClaims.Add(new Claim("customRole", "simpleadmin"));
但是当我进入客户端应用程序时,我得到这样的声明:
customRole = ["superadmin","simpleadmin"]
这打破了我在客户端应用程序的操作中使用的角色属性背后的所有逻辑:
[Authorize(Roles = "superadmin")]
我尝试按照上一个链接 (here) 中讨论的内容进行操作,但问题仍然存在。
是否缺少任何东西,因此声明被分开而不是与不同的值合并?还是以允许值数组的不同方式使用授权?
还应该提到,我在上个月第一次开始使用 Asp.NetCore、IdentityServer4 和 Roles,我正处于学习曲线中。
感谢您的宝贵时间,干杯
【问题讨论】:
标签: asp.net-core identityserver4 claims