Per*_*ack 3 php acl database-permissions user-permissions
我还在我的 ACL 项目中工作,我想对以下问题有一些想法:
我使用 MySQL 来存储我的用户、角色和权限。起初,我在我的 TABLE Roles 中创建了一个字段“parent_id”,我试图通过这个来管理每个用户的权限。这有点奏效,直到我意识到如果我添加一个新角色,管理层次结构和控制谁有权访问哪些资源真的很复杂。我做了一些搜索,我意识到使用关系数据库来处理层次结构真的很复杂,所以我放弃了使用层次结构。
我希望您能帮助找到管理用户创建的最佳解决方案:我有 4 个不同的用户:SuperAdmin、CustomerAdmin、Technician、client。例如,当我在页面中创建新用户时,我不想让技术人员创建类型为 CustomerAdmin 或 SuperAdmin 的新用户。
我想只让 SuperAdmin 创建一个新用户,但我的一个限制是我也必须让 CustomerAdmin 创建用户,也是技术人员。
试图更具说教性,超级管理员可以是我。客户管理员是我的客户,他有一家企业。在他的企业中,他可以创建两种类型的用户:技术人员和客户。
这只是一个例子,但如果我想创建一种新的角色,赋予他新的权限,我必须找到一种方法来拒绝他创建比他更强大的用户的权限。
我不确定我的问题是否客观,但欢迎任何可以与我讨论这个问题的人。
您已经拥有自己的角色,但每个角色都需要拥有执行操作的权限。这几乎肯定是矫枉过正,但它应该是高度灵活的。
| 角色表 | | 角色 ID | 角色名称 | 访问级别 | --------------------------- | 1 | 超级管理员 | 10 | | 2 | 客户管理 | 20 | | 3 | 技术员 | 40 | | 4 | 客户 | 80 | | 行动表 | | 操作 ID | 动作名称 | --------------------------- | 1 | 创建用户 | | 2 | 删除用户 | 等等。 | 权限表 | | 正确的ID | 角色 ID | 操作 ID | ---------------------------------- | 1 | 1 | 1 | | 2 | 1 | 2 | | 3 | 2 | 1 | | 4 | 2 | 2 | 等等。 | 参数表 | | 参数 ID | 正确的ID | 参数名称 | 参数值 | -------------------------------------------------- --------- | 1 | 1 | 最大用户访问| 10 | | 2 | 2 | 最大用户访问| 10 | | 3 | 3 | 最大用户访问| 20 | | 4 | 4 | 最大用户访问| 20 | 等等。
权限表显示 SuperAdmin 和 ClientAdmin 都可以创建和删除用户。参数表将 ClientAdmin 限制为创建最大访问级别为 20(1 为最高)的用户。您可以将此访问级别与角色匹配,以便为新用户提供角色列表,其中 Role.Access_Level >= Max User Access。
操作可以根据权限使用多个参数集,但我想不出除了最大用户访问权限之外的任何其他内容。