【发布时间】:2019-10-09 20:12:04
【问题描述】:
我们的系统中有多个角色,一个用户可以有多个角色分配给它 一切都是定制的。我们没有使用身份等。
我正在发送我的 api 请求,其中包含“guest”、“admin”等角色。 Api 应该只返回具有这些角色的用户
这就是我过滤用户的方式
List<string> roles -> 这是一个具有角色名称的变量
来自前端假设“管理员”
roles = "admin" -> 但可以有更多角色
UserRoleMappings 是保存用户 ID 和 角色 id 组合以保存特定用户的角色
现在在获取所有用户时,我想过滤它们以便
query.Where(user => user.UserRoleMappings.Any(urm => roles.Contains(urm.UserRole.Name)));
此查询正在获取具有“admin”+“guests”角色的用户,就像我一样 应用包含。但我需要只有“管理员”角色的用户
因为
user
1 user1
2 user2
role
1 admin
2 guest
userMapping
1 1
1 2
2 1
Api 应该只返回 user2,但它也返回 user1。这个方法应该是通用的,应该适用于多个角色
感谢和问候
【问题讨论】:
-
您是否具有从角色(到映射)到用户的导航属性?如果您发布您的实体,也许会有所帮助。
-
从您的
userMapping表看来,两个用户都具有管理员角色。所以请确保数据正确,并指定哪一列包含哪个 id。 -
假设:(
userMapping(或者是UserRoleMappings???)有行,用户,角色然后你有1 -> 1和2 -> 1所以两个用户都有管理员角色。
标签: c# .net linq entity-framework-6 iqueryable