有没有人知道一些与建立heirarchical用户帐户系统相关的好资源?我正在设置一个,并且正在努力解决一些更复杂的逻辑(特别是在确定权限时)。我希望我能找到一些资源来帮助我。
一些背景:我正在为允许嵌套组层次结构的Web CMS构建用户帐户系统。每个组都可以被允许/拒绝访问读取,写入,添加和删除(显式地为该组,或由其父级之一隐式)。好像这不够复杂,系统还允许用户成为多个组的成员。 - 这就是我被困住的地方。我已经完成了所有设置,但我正在努力确定给定用户的确定参数的实际逻辑。
CakePHP手册对访问控制列表的工作方式有很好的描述。
http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html
将为给定组设置的权限表示为位掩码。将位掩码进行OR运算将为您提供结果权限集。
@Alex的更新:
我3年前写过这个答案,但我相信我暗指以下......
从问题
嵌套组层次结构。每个组都可以被允许/拒绝访问读取,写入,添加和删除(显式地为该组,或由其父级之一隐式)。好像这不够复杂,系统还允许用户成为多个组的成员。 - 这就是我被困住的地方。我已经完成了所有设置,但我正在努力确定给定用户的确定参数的实际逻辑。
分配与系统中组(或角色)的总权限集匹配的位掩码:
例如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)
我不知道提问者系统的细节,但可以增加这里概述的系统,以使用不同的逻辑运算符实现不同的组合成行为。
查看Andrew File System中的权限。它允许用户创建和管理自己的组,同时有选择地分配管理员权限和ACL。您可能会发现许多讨厌的细节已经在他们的模型中为您解决了。
编辑:这是一个更好的AFS文档链接:
http://www.cs.cmu.edu/~help/afs/index.html
这是关于群组的部分:
我以前完成了这个,并没有简单的实现。您将要查看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”