我正在尝试为RBAC提出数据库架构,我希望能够创建“部门”和“职位”。职位将扩展部门的通用特权。我应该只创建一个“角色”表,同时持有职位和部门吗?或者我应该创建3个表:职位,部门和角色,职位和部门表具有角色表的外键? Thx提前为大家提供帮助!欢呼声。
答案 0 :(得分:18)
我在尝试使用自定义RBAC实现时的经验如下:
您阅读了很多RBAC文献并认为您理解它。然后你继续尝试实现它,只是为了意识到你根本不理解它。最后,当你在项目中移动时,这将是有意义的。
根据您的问题,您已经知道要应用RBAC的业务域。但是暂时忘掉实际的业务对象。您的RBAC实现应该是通用的,这意味着您具有由角色,用户,权限,操作等表组成的数据库模式。然后你将拥有映射到这些表的对象(一对一的关系)。
一旦你有了这个RBAC实现,它就可以建模到几乎任何业务领域,例如你提到的'Deparment'。
请记住,它并非完美......我已经从实际的RBAC文献中增强/修改/派生,以便添加自定义功能,增强性能等。
我暂时没有这方面的工作,所以我希望以下是正确的:
角色:创建实例并将其保存到其支持表中。角色将分配给用户。
权限:权限基本上是对象操作的组合。权限分配给角色。
操作:操作只是您想要的任何操作。它可以是CRUD(创建,读取,更新,删除),也可以是“打印”,“搜索”或人(或系统)可以对对象(或对象组)执行的任何操作。
< / LI>为了获得更大的权力,您可以实施约束以应用大量的各种限制。
使用此框架,您应该能够映射:
答案 1 :(得分:4)
标准?这是一个无法回答的问题,因为没有这样的事情存在。 RBAC始终根据要求进行定制。
您可能希望看到以下资源: