设计用户权限机制

时间:2015-09-01 16:32:11

标签: design-patterns architecture permissions software-design user-permissions

我有几种类型的用户使用该应用程序来帮助优化公共库的流程:客户端,图书管理员,管理员。

与管理员相比,图书馆员限制了对数据的访问。例如,Librarian无法从其他库或同一库中的其他部门查看客户端。 所以我需要开发权限逻辑。

我询问有关设计权限机制的最佳做法的建议? 应该在数据库级别做什么? 在业务逻辑层面应该做些什么?

2 个答案:

答案 0 :(得分:1)

这取决于数据的敏感性。您可以在数据库级别设置访问权限并使用不同的数据库登录。但这似乎是对你的情况严格......我将通过一个通用的数据库登录和一个应用程序驱动的权限管理来解决这个问题。

命令模式(https://en.wikipedia.org/wiki/Command_pattern)非常有用......您可以为每个命令设置一个权限。

一种常见的方式(还有更多)可能看起来像这样......你需要以下表格:

  • 用户(个人资料)
  • UserGroup(角色数据)
  • 对(可以允许或禁止的内容,请查看“命令模式”)
  • UserGroup_right(mapping)
  • 会话(登录时间和连接到当前工作的其他数据)
  • SessionRights(将在用户登录时填写)

用户是用户组(=角色)的成员。您将权限绑定到该组。 当用户登录(进入您的应用程序)时,系统知道用户的组成员身份并收集连接的权限。应用程序中的任何控件/菜单项都会自动响应(变为不可见或禁用)。

对会话ID中的数据库过程或函数的任何调用。因此,数据库功能可以很容易地检测到命令可能被执行,数据列表可能会被返回......

希望这有帮助!

答案 1 :(得分:0)

您应该将不同的应用发送到不同的用户类型。

另一种(上面)漂亮的设计解决方案是拥有一个可以根据用户类型重新配置其组件的应用程序。这意味着根据更改的权限参数,按需加载和丢弃资产。

如果您不希望单个平台经常更改用户权限上下文,那么我认为第一个解决方案更易于执行且更可靠。