我有几种类型的用户,他们使用该应用程序来帮助优化公共图书馆的流程:客户端,图书馆管理员,管理员。
与管理员相比,库管理员限制了对数据的访问。例如,Librarian不能查看来自其他库或同一库中其他部门的客户端。所以我需要开发权限逻辑。
我请教设计权限机制的最佳实践是什么?在数据库级别上应该做什么?在业务逻辑层面上应该做些什么?
发布于 2015-09-05 08:44:22
这取决于数据的敏感性。您可以在数据库级别设置访问权限,并使用不同的数据库登录。但这对你来说似乎太严格了.我会用一个通用的数据库登录和一个应用程序驱动的权限管理来解决这个问题。
命令模式(https://en.wikipedia.org/wiki/Command_pattern)非常有用...您可以为每个命令指定一个权限。
一种常见的方式(还有更多)可能看起来像这样……您需要以下表格:
命令用户(personal data)
other data connected to current work)
用户是用户组(=角色)的成员。您将权限绑定到此组。当用户登录(到您的应用程序)时,系统知道用户的组成员身份并收集连接的权限。应用程序中的任何控件/菜单项都会自动做出反应(变得不可见或禁用)。
任何对数据库过程或函数的调用都会提交会话ID。因此,数据库功能可以很容易地检测到是否可以执行命令,是否可以返回数据列表……
希望这能有所帮助!
发布于 2015-09-05 18:59:02
您应该将不同的应用程序发送给不同的用户类型。
另一个(上面)不错的设计解决方案是拥有一个可以根据用户类型重新配置组件的应用程序。这将意味着根据更改的权限参数按需加载和丢弃资产。
如果您不希望单个平台经常更改用户权限上下文,那么我认为第一个解决方案执行起来更简单,也更可靠。
https://stackoverflow.com/questions/32336684
复制相似问题