Php 多级用户权限系统的设计

Php 多级用户权限系统的设计,php,mysql,web-applications,user-roles,user-permissions,Php,Mysql,Web Applications,User Roles,User Permissions,我在一个网站上工作,它有一个类似于树的数据库模式。自上而下我有: 一个公司可以有很多 可以有多个位置的位置 可以有很多的舰队 车辆 用户权限系统必须灵活,因为有人可以在树的任何级别获得或限制访问。例如,默认情况下,管理位置x的人员将拥有对位置x下方所有车队和位置x下方所有车辆的完全访问权限。但我也应该能够限制用户访问位置x下的任何节点 为这样的权限系统开发模式的正确方法是什么?存储用户可以访问的每个节点是否现实,即使它有点冗余?我的目标是能够轻松地运行查询,例如获取用户有权访问的所有位置。您

我在一个网站上工作,它有一个类似于树的数据库模式。自上而下我有:

  • 一个公司可以有很多
  • 可以有多个位置的位置
  • 可以有很多的舰队
  • 车辆
用户权限系统必须灵活,因为有人可以在树的任何级别获得或限制访问。例如,默认情况下,管理位置x的人员将拥有对位置x下方所有车队和位置x下方所有车辆的完全访问权限。但我也应该能够限制用户访问位置x下的任何节点


为这样的权限系统开发模式的正确方法是什么?存储用户可以访问的每个节点是否现实,即使它有点冗余?我的目标是能够轻松地运行查询,例如获取用户有权访问的所有位置。

您可能会发现许多线程非常有趣。其中:


我没有精力写一个完整的答案,所以我将只发表评论,让其他人来填补空白。您刚才描述的一切都可以通过ACL使用继承来完成。访问控制列表。您可以将位置设置为ACL中的资源,您的车队也可以是资源,您可以通过这种方式允许用户访问。或者,您可以使用嵌套的集合模型层次结构,完全忽略ACL,只允许用户访问树中介于lFT和RGT值之间的节点。即,从lft介于4和54之间的位置选择*。