在我们开发一个需要为每个用户分配权限级别的应用程序时,是否有人有任何提示。权限级别将确定用户可以使用的功能。
有什么建议吗?
您(如果)在您的应用程序中使用此类功能吗?
答案 0 :(得分:1)
首先,您需要弄清楚您的权限系统要覆盖哪些功能,以及详细信息:
访问表格(列表,CRUD)
功能/模块
在记录级别访问(= ACL)
肯定(授予)或否定(撤销)语义
允许执行的“管理员”角色是什么
如果要限制对表的访问,可以轻松设置包含所有表名的附加表,并授予对角色/组的select-list / select-record / insert / update / delete访问权限,如草绘所示由JV。
如果要授予对函数或模块的访问权限,请使用模块表并将执行权授予角色/组。
这两个功能都等同于SQL中的授权。
记录级别的访问限制要复杂得多,因为您需要建模记录状态的访问权限(例如,CMS中的“公共”,“私有”,“已发布”),或者对每个记录具有明确的权限记录。
如果要实现与NTFS等效的权限方案,则根据分配给用户的组计算每条记录的权限,并具有可能覆盖组权限的用户特定权限,并撤消覆盖授权。 / p>
我的应用程序通常适用于表+功能/组级别,这可能足够好,具体取决于您的要求。
答案 1 :(得分:0)
这是Turbogears中Python身份模块的部分ER图。它实现了您期待的目标。用户与组关联,组具有关联权限。
可以实现限制功能可用性的两种方式:
阅读更多关于MVC(以及Turbogears可能)的信息。
答案 2 :(得分:0)
这取决于您使用的语言和应用程序的体系结构(Web服务?客户端软件?)。
对于服务器玩具项目,我虽然要为每个命令分配最小权限级别,并在收到命令网络数据包时直接检查它,当用户没有足够高的级别时触发权限错误。我可能不适合其他架构。
答案 3 :(得分:0)
追求“水平”概念可能有点死路一条。它可能适合您当前的应用程序,但是由角色到权限的映射组成的数据模型更为通用,适合大多数用途。
为用户分配角色。用户可以拥有多个角色,并且他们的角色定义他们拥有的权限。这个概念类似于群组,但“角色”通常很容易直接映射到业务逻辑(想想“管理员”,“用户”,“职员”,“客户经理”,“区域经理”等角色)。权限也可以直接映射到函数和数据对象。您也可以映射到使用底层平台访问控制的实现(例如Java权限)。
在控制器代码中,您(通过他们的角色)检查用户是否拥有执行功能所需的权限。最好修改视图以隐藏用户无权执行的功能。
在您的设计中,您可以将访问控制系统可视化/记录为矩阵(特权角色)。