我需要将用户角色和权限系统添加到使用PHP/MySQL构建的web应用程序中.我想要这个功能:

  1. 一个根用户可以创建子根、组、规则和普通用户(所有权限).
  2. 子根用户只能为自己的组(无组)创建规则、权限和用户.
  3. 用户可以根据组根用户分配给他的权限访问他或他的组创建的内容.

我需要系统足够灵活,以便为内容分配新的角色和权限.

我有一个存储组密钥和其他信息的users表.目前,我在每个内容表中使用两个feild,即createdByCreatedByGroup,并以此作为某个用户是否拥有权限的点.但它不够灵活,因为对于每一个新内容,我都要经历所有的数据更新和权限更新.请帮我讨论一下你在模式设计方面的最佳实践.

推荐答案

适合你需要的模式称为role-based access control.

PHP中有几个很好的实现,包括Zend_Acl(良好的文档化)、phpGACLTinyACL.大多数框架也有自己的某种形式的ACL实现.

即使你 Select 推出自己的解决方案,它也会帮助你回顾那些考虑周全的解决方案.

Mysql相关问答推荐

在联合查询中使用GROUP BY和ORDER BY

从表中 Select 具有不同顺序的列

MySQL:获取连续记录的数量(日期)?

Mysql,从两个不同的表中添加原始数据,从第一个表中获取所有内容,仅从第二个表中获取curdate内容

按唯一列排序,但保持匹配的列在一起

MySQL如何在触发器内部 Select 多行然后插入它们

过滤值为0时如何在MySQL查询中设置条件?

如何找到每个user_id每个产品的买家类型数量?

谁能帮我优化where子句

从多到多表中 Select 数据而无需重复

为什么一个 10 位的电话号码不能存储在长度为 10 的整数中?

由于长时间操作而断开连接后,我的 sql 查询是否继续执行?

有没有更好的方法在无限滚动的网页上呈现获取的提要数据?

如何通过if语句对SQL查询进行排序

索引和多列主键

如何为 php 启用 mysqlnd?

MySQL嵌套 Select 查询?

你如何 OR 两个 LIKE 语句?

在 MySQL Workbench EER 图中的多个列上创建唯一约束

Mysql中int(10)的最大大小是多少