MySQL PHP用户权限&群组权限合并 - 最佳做法?

时间:2016-12-19 20:36:28

标签: php mysql permissions roles

我正在尝试创建一个小应用程序,它将拥有各种用户组,大约6个。我试图找出创建访问控制模型的最佳方法。以下是一些要求:

  • 随着应用程序的发展,权限应该可以轻松编辑
  • 需要新的权限或旧的权限
  • 用户可以是多个群组的成员
  • 组应该具有一组灵活的权限 编辑
  • 用户还可以拥有应覆盖的个人权限 组权限控制器中声明的那些

这是我通过研究各种不同方法/想法而提出的表格布局。

enter image description here 我的想法是,通过使用这个表结构,我可以运行这样的SQL查询(使用当前登录用户的user_id):

SELECT users.id, users.forename, permissions.name
FROM permissions
INNER JOIN groups_permissions ON permissions.id = groups_permissions.groups_permissions_permissions_id
INNER JOIN groups ON groups_permissions.groups_permissions_groups_id = groups.id
INNER JOIN groups_users ON groups_permissions.groups_permissions_groups_id = groups_users.groups_id
INNER JOIN users ON groups_users.users_id = users.id
WHERE users.id =4
UNION 
SELECT users.id, users.forename, permissions.name
FROM permissions
INNER JOIN users_permissions ON permissions.id = users_permissions.users_permissions_permissions_id
INNER JOIN users ON users_permissions.users_permissions_users_id = users.id
WHERE users.id =4

这应该给我一个组合的权限列表,包括所有组和任何用户特定的权限。然后我可以在本地缓存此查询,因此我不需要多次运行它。 (我想如果权限表发生了变化,我会设置某种清除缓存的方法。)

这看起来像是一个合理的计划,还是我忽视的明显消极方面?

由于

0 个答案:

没有答案