【发布时间】:2012-10-25 16:32:27
【问题描述】:
我目前正在设计一个需要使用用户权限和角色的网络应用程序。角色将存储在 SQL 数据库中(使用 MS SQL,但这应该是独立于实现的设计)。
允许用户拥有多个角色的标准做法是什么,如果你愿意的话,是“一对多”关系。
我从概念上提出了一个 int 字段的想法,该字段使用位标志来确定用户是否具有该角色:
User Group | Permission Mask | Value
-------------------------------------
Basic | 0 0 0 0 1 | 1
Advanced | 0 0 0 1 0 | 2
... | ... | ...
Admin | 1 0 0 0 0 | 16
这样,在我的 PHP 端的身份验证中,我可以快速计算出用户是否属于该角色。我看到的最大缺点是可读性和理解性。对于不参与此设计决策的人,他们是否能够弄清楚维护/升级(新角色)出现时发生了什么?
这适合我的需要吗?是否有更标准化的方式允许用户拥有多个角色/组?
【问题讨论】:
标签: php sql authentication permissions