用户自己的权限和组权限的用户权限
我正在开发一个用户许可系统,这里是我的
每个用户都可以拥有权限
user_permission
表中有记录 所以要获得用户拥有的所有权限,我必须获得用户所属的组权限的联合以及用户在user_permission
表中的权限
我发现作为解决方案的sql语句,但我不知道它是否是好的(我可以只使用一条SELECT语句得到结果)
选择语句:
SELECT p.name FROM permission p
JOIN group_permission as gp ON gp.permission_id = p.id
JOIN `group` as g ON g.id = gp.group_id
JOIN `user_group` as ug ON ug.group_id = g.id
where ug.user_id = 5
UNION
SELECT p.name FROM permission p
JOIN `user_permission` as up ON up.permission_id = p.id
where up.user_id = 5
这里是我的数据库的mysql转储:
https://pastebin.com/2Kaq8fVs
第三行不是必需的。 你可以通过group_id
加入gp
和ug
。 保留你的group
表以保护外键,但你不需要它来进行这种查询。 正如您所描述的,其他一切都可以满足您的要求。
注意:读取所有权限而不定期重新加载会导致更改的权限不被应用程序识别。 如果这是一个问题,您可以额外用特定权限约束您的查询。
链接地址: http://www.djcxy.com/p/73401.html上一篇: User permissions from user own permission and group permission