开发具有不同权限级别的应用的提示

时间:2008-12-28 08:43:57

标签: permissions

在我们开发一个需要为每个用户分配权限级别的应用程序时,是否有人有任何提示。权限级别将确定用户可以使用的功能。

有什么建议吗?

您(如果)在您的应用程序中使用此类功能吗?

4 个答案:

答案 0 :(得分:1)

首先,您需要弄清楚您的权限系统要覆盖哪些功能,以及详细信息:

  • 访问表格(列表,CRUD)

  • 功能/模块

  • 在记录级别访问(= ACL)

  • 肯定(授予)或否定(撤销)语义

  • 允许执行的“管理员”角色是什么

如果要限制对表的访问,可以轻松设置包含所有表名的附加表,并授予对角色/组的select-list / select-record / insert / update / delete访问权限,如草绘所示由JV。

如果要授予对函数或模块的访问权限,请使用模块表并将执行权授予角色/组。

这两个功能都等同于SQL中的授权。

记录级别的访问限制要复杂得多,因为您需要建模记录状态的访问权限(例如,CMS中的“公共”,“私有”,“已发布”),或者对每个记录具有明确的权限记录。

如果要实现与NTFS等效的权限方案,则根据分配给用户的组计算每条记录的权限,并具有可能覆盖组权限的用户特定权限,并撤消覆盖授权。 / p>

我的应用程序通常适用于表+功能/组级别,这可能足够好,具体取决于您的要求。

答案 1 :(得分:0)

这是Turbogears中Python身份模块的部分ER图。它实现了您期待的目标。用户与组关联,组具有关联权限。

可以实现限制功能可用性的两种方式:

  1. (我更喜欢)在你的控制器中检查用户所属的组,并根据它调整你对View的响应。因此,View只是一个渲染器 - 没有业务逻辑。
  2. View获取组和权限等用户详细信息,并决定要显示的内容和不显示的内容(MVC违反)。
  3. 阅读更多关于MVC(以及Turbogears可能)的信息。

    alt text http://jaivikram.verma.googlepages.com/temp.jpeg

答案 2 :(得分:0)

这取决于您使用的语言和应用程序的体系结构(Web服务?客户端软件?)。

对于服务器玩具项目,我虽然要为每个命令分配最小权限级别,并在收到命令网络数据包时直接检查它,当用户没有足够高的级别时触发权限错误。我可能不适合其他架构。

答案 3 :(得分:0)

追求“水平”概念可能有点死路一条。它可能适合您当前的应用程序,但是由角色到权限的映射组成的数据模型更为通用,适合大多数用途。

为用户分配角色。用户可以拥有多个角色,并且他们的角色定义他们拥有的权限。这个概念类似于群组,但“角色”通常很容易直接映射到业务逻辑(想想“管理员”,“用户”,“职员”,“客户经理”,“区域经理”等角色)。权限也可以直接映射到函数和数据对象。您也可以映射到使用底层平台访问控制的实现(例如Java权限)。

在控制器代码中,您(通过他们的角色)检查用户是否拥有执行功能所需的权限。最好修改视图以隐藏用户无权执行的功能。

在您的设计中,您可以将访问控制系统可视化/记录为矩阵(特权角色)。