我目前正在使用Symfony 2库构建PHP应用程序,但我认为这个问题适用于任何类型的Web应用程序。这是我想要实现的基本架构:
- 每个用户都是一个或多个组的一部分 - 每个组实施一个或多个角色 - 组实施的角色适用于该组中的所有用户 - 用户可以实施其组中没有的其他角色
一个例子:
- 一个名为“写手”的小组执行“作者”角色和“评论审核员”角色 - 一个名为“管理员”的小组执行“管理员”角色 - 用户“Henry”是“writer”组和“administrator”组的成员 - 用户“Henry”实施了“owner”角色
对该用户有效的角色将是'writer','comment moderator','administrator'和'owner'。
编辑:
用户能够从其所在的组继承角色并且也能够拥有自己的角色,这种行为好不好?如果是,如何实现?
我考虑了5个表:
Users:
- id - name Role:
- id - name UserRole:
- id_user(外键) - id_role(外键)
Group:
- id - name GroupRole:
- id_group(外键) - id_role(外键)
UserGroup:
- id_user(外键) - id_group(外键)
这可以工作,主要问题是防止用户从它所属的组中添加已有的个人角色。
但是这看起来有点复杂,是否有更好的方法?谢谢。
- 每个用户都是一个或多个组的一部分 - 每个组实施一个或多个角色 - 组实施的角色适用于该组中的所有用户 - 用户可以实施其组中没有的其他角色
一个例子:
- 一个名为“写手”的小组执行“作者”角色和“评论审核员”角色 - 一个名为“管理员”的小组执行“管理员”角色 - 用户“Henry”是“writer”组和“administrator”组的成员 - 用户“Henry”实施了“owner”角色
对该用户有效的角色将是'writer','comment moderator','administrator'和'owner'。
编辑:
用户能够从其所在的组继承角色并且也能够拥有自己的角色,这种行为好不好?如果是,如何实现?
我考虑了5个表:
Users:
- id - name Role:
- id - name UserRole:
- id_user(外键) - id_role(外键)
Group:
- id - name GroupRole:
- id_group(外键) - id_role(外键)
UserGroup:
- id_user(外键) - id_group(外键)
这可以工作,主要问题是防止用户从它所属的组中添加已有的个人角色。
但是这看起来有点复杂,是否有更好的方法?谢谢。