分层组权限理论/资源?

时间:2008-09-16 18:28:31

标签: permissions theory usergroups

有没有人知道与设置heirarchical用户帐户系统相关的一些好资源?我正在设置一个,并且正在努力解决一些更复杂的逻辑(特别是在确定权限时)。我希望我能找到一些资源来帮助我。

一些背景知识 我正在为允许嵌套组层次结构的Web CMS构建用户帐户系统。每个组都可以被允许/拒绝访问读取,写入,添加和删除(显式地为该组,或由其父级之一隐式)。好像这不够复杂,系统还允许用户成为多个组的成员。 - 这就是我被困住的地方。我已经完成了所有设置,但我正在努力确定给定用户的确定参数的实际逻辑。

4 个答案:

答案 0 :(得分:3)

CakePHP手册对访问控制列表的工作方式有很好的描述。

http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html

答案 1 :(得分:2)

将为给定组设置的权限表示为位掩码。将位掩码进行OR运算将为您提供结果权限集。

@Alex的更新:

3年前我写了这个答案,但我相信我暗指以下......

从问题

  

嵌套组层次结构。可以允许/拒绝每个组访问   读取,写入,添加和删除(显式地为该组,或   其父母之一暗示)。好像那并不复杂   足够,该系统还允许用户成为多个成员   组。 - 这就是我被困住的地方。我已经完成了所有设置,但是   我正在努力确定一个确定的排放的实际逻辑   给予用户。

分配与系统中组(或角色)的总权限集匹配的位掩码:

e.g。 00(使用两位在这里保持简单!)

第一位授予Permission A,第二位授予Permission B

现在说组A授予以下权限集:01

...并说组B授予以下权限集:10

要在任意一组组中获取用户的结果权限集,您可以在权限集位掩码上执行逻辑OR

Permission set for Group A   01
Permission set for Group B   10 OR 
                             ----
Resultant permission set     11 (i.e. both permission A and B are conferred)

我不知道提问者系统的细节,但是可以扩充此处概述的系统,以使用不同的逻辑运算符实现不同的组合成行为。

答案 2 :(得分:1)

查看Andrew File System中的权限。它允许用户创建和管理自己的组,同时有选择地分配管理员权限和ACL。您可能会发现许多讨厌的细节已经在他们的模型中为您解决了。

编辑:这是AFS文档的更好链接:

http://www.cs.cmu.edu/~help/afs/index.html

以下是关于群组的部分:

http://www.cs.cmu.edu/~help/afs/afs_groups.html

答案 3 :(得分:1)

我之前完成了这个并且它没有简单的实现。您将要查看SecurityPermission类。

[http://msdn.microsoft.com/en-us/library/system.security.permissions.securitypermission.aspx][1]

我之前使用XML(我不确定我会再做)并通过CLR存储过程将XML作为XML列中的SQL服务器内的权限列表存储。 XML将有一个名为“permission”的元素,然后该权限实际上是代码中的ENUM。每个权限都是SecurityPermission类的新实现(上面链接)用户绑定到SQL Server中定义的组,然后当用户被添加/删除到组时,XML doc将更新以反映他们分开的组的。

用户登录后,用户凭据将被加载到应用程序商店(会话)中,然后相应地进行访问。当需要进行授权时,应用程序商店中的XMl将通过“FromXML”方法下载到SecurityPermission中。此时我将使用以下方法来确定用户是否有权限:

  • 需求
  • 相交
  • 联盟
  • IsUnrestricted
  • IsSubSetOf
等等,等等。

在执行Demand之后的那一刻,我能够根据我在SecurityPermissions中实现安全例程的方式来确定调用者是否具有访问权限。

同样,这会留下一些细节,但这应该会让你走上正确的道路。

看一下这个名称空间:[2]:http://msdn.microsoft.com/en-us/library/system.security.permissions.aspx“System.Security.Permissions”