我目前正在设计一个需要使用用户权限和角色的 Web 应用程序。角色将存储在 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 端的身份验证中,我可以快速计算出用户是否属于该角色。我看到的最大缺点是可读性和理解性。对于不参与此设计决策的人,他们是否能够弄清楚当维护/升级(新角色)出现时发生了什么?
这适合我的需要吗?是否有更标准化的方式允许用户拥有多个角色/组?