用户自己的权限和组权限的用户权限

我正在开发一个用户许可系统,这里是我的

在这里输入图像描述

每个用户都可以拥有权限

  • 他是一个组的成员,该组有权限
  • 他在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加入gpug 。 保留你的group表以保护外键,但你不需要它来进行这种查询。 正如您所描述的,其他一切都可以满足您的要求。

    注意:读取所有权限而不定期重新加载会导致更改的权限不被应用程序识别。 如果这是一个问题,您可以额外用特定权限约束您的查询。

    链接地址: http://www.djcxy.com/p/73401.html

    上一篇: User permissions from user own permission and group permission

    下一篇: User can't access a database