0

我正在编写一个具有许多用户、几个角色和这些角色的特定权限的新应用程序。为此,我想创建以下表格:

Users (ID,Login, password,..)
Roles(ID,Rolename)
User_Roles(User_ID, Role_ID)
Permissions(ID,PermissionName)
Permission_Roles(Permission_ID, Role_ID)

我的想法是构建一个函数,它允许检查用户是否具有访问表单的特定权限。我会通过创建诸如“canReadFormX”、“canEditFormX”之类的权限/规则来做到这一点,这将允许我使用一个主要函数来检查和执行这些特定规则,并使用每个表单的函数来调用它。

这是一种可行的方法(或者更确切地说,我是否正确理解了有关 RBAC 的所有内容),还是这太复杂了?任何建议都非常感谢!

4

1 回答 1

2

对我来说这似乎很公平,并且类似于我们已经为前 3 张桌子设置的内容。

然后,您必须解决“操作”问题,即分配使用您的应用程序操作的权限。我不确定您的“权限”提案是否涵盖所有情况,因为您必须处理两大类操作:

  1. 您已经确定的“打开表单”操作:您实际上必须为每个表单定义 2 个级别的授权:“查看”权限和“更新”权限。
  2. 所有其他操作,例如表单特定按钮或菜单,将允许您运行特定操作,而不仅仅是打开表单(执行报告、进行特定计算、自动导入或更新数据等)。

一种解决方案/我的建议是为此维护 2 个表:

  • “表格”表
  • 一个“动作”表

以及相应的链接表:

  • 一个“Form_Role”表
  • 一个“Action_Role”表

有了这样的配置,你就完全被覆盖了。您甚至可以决定哪个角色有权查看特定表单上的特定报告,只要通过表单上的特定控件或菜单​​访问相应的操作即可。

Forms 和 Actions 表都非常有趣,因为它们都参与了您的应用程序元模型......

编辑:顺便说一句,如果您在域中,您可以使用用户的域凭据来控制他\她对您系统的访问权限。在这种情况下,您不需要在 RBAC 系统中存储密码。

于 2012-01-31T09:16:26.070 回答