【发布时间】:2020-01-03 11:16:18
【问题描述】:
在我们的 .NET Core Web API 中,我们配置了基于声明的授权,它运行良好。我们创建了角色声明并将角色分配给用户。我们不使用用户声明。
现在我需要让用户提出特定声明。在 UserManager 中有一个方法 GetUsersByClaimAsync(Claim),它似乎只考虑用户声明。不是角色声明。所以就我而言,它不可用。
所以我正在考虑通过声明获取角色,然后通过角色获取用户(效率不高,因为它必须进行多次数据库调用才能分别获取每个角色的用户)。但即便如此,也没有直接的方法可以通过 UserManager 或 RoleManager 中的声明来获取角色。
所以对我来说,除了自定义查询之外,似乎没有什么干净的方法可以实现这一点。
我不确定我在这里遗漏了什么。有没有人用更好的方法做到了这一点?
谢谢
【问题讨论】:
-
您需要一些身份实体之间的导航属性。对于基于角色的授权,我认为您应该忘记 asp.net 身份并实现自定义实体。
-
我遇到了同样的情况,尝试使用自定义 Identity Server 4 存储库来解决这个问题。
标签: c# asp.net-core asp.net-identity claims-based-identity claims-authentication