我一直在开发user management system,为用户提供基于角色的访问控制。
目前的工作方式如下:
- 指定了授权规则,用于在代码中定义需要检查用户权限的特定检查点。此权限可以是有条件的,具体取决于用户的状态和其他变量。
- 授权规则是多对一映射到我称之为“组”的内容。因此,每个组可以有许多规则,但规则不能由多个组共享。我现在意识到我的“群体”是更常被称为“角色”的东西。
- 用户是多对多映射到组。用户可以属于多个组,组可以有多个用户。用户继承其所属组的所有授权规则。
- 用户也被分配到一个“主要群组”,该群组确定其体验的各种其他方面,如主题和布局,但可以选择用作授权规则中的条件。
- 用户也可以直接分配授权规则,再次作为一对多(用户到规则)映射。
- “主”帐户具有不受限制的权限,会自动绕过所有检查点。
醇>
从图形上看,这看起来像:
我的新计划:
我的计划是使其更符合标准术语,并更清晰地区分群组成员资格的权限和用户体验方面。因此,我的新计划将是:
- 指定了授权规则,用于在代码中定义需要检查用户权限的特定检查点。此权限可以是有条件的,具体取决于用户的状态和其他变量。
- 授权规则多对一映射到角色。因此,每个角色可以有多个规则,但规则不能由多个角色共享。
- 用户多对一映射到组。一个组可以有多个用户但用户只能属于一个组。该组确定其体验的各种其他方面,如主题和布局,但可以选择用作授权规则中的条件。
- 角色可以分组到多对多。用户继承了为其分配的组的所有角色。
- 用户也可以直接分配到角色,再次作为多对多(用户到角色)映射。
- “主”帐户自动拥有所有角色。但是,主帐户仍然可以属于单个组,以确定其主题和布局体验。
醇>
这看起来像是:
我的新方案似乎更复杂,因为它引入了第四种类型的对象。另一方面,它可能更容易使用,因为它更清晰地将我的系统的“权限”方面与“基于组的用户体验”方面分开。
这是实施RBAC和用户组的明智方法,还是有任何我未考虑的奇怪边缘情况?