有没有人知道与设置heirarchical用户帐户系统相关的一些好资源?我正在设置一个,并且正在努力解决一些更复杂的逻辑(特别是在确定权限时)。我希望我能找到一些资源来帮助我。
一些背景知识 我正在为允许嵌套组层次结构的Web CMS构建用户帐户系统。每个组都可以被允许/拒绝访问读取,写入,添加和删除(显式地为该组,或由其父级之一隐式)。好像这不够复杂,系统还允许用户成为多个组的成员。 - 这就是我被困住的地方。我已经完成了所有设置,但我正在努力确定给定用户的确定参数的实际逻辑。
答案 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
以下是关于群组的部分:
答案 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中。此时我将使用以下方法来确定用户是否有权限:
在执行Demand之后的那一刻,我能够根据我在SecurityPermissions中实现安全例程的方式来确定调用者是否具有访问权限。
同样,这会留下一些细节,但这应该会让你走上正确的道路。
看一下这个名称空间:[2]:http://msdn.microsoft.com/en-us/library/system.security.permissions.aspx“System.Security.Permissions”