分层组权限理论/资源?

问题描述 投票:2回答:4

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

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

permissions theory usergroups
4个回答
3
投票

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

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


2
投票

将为给定组设置的权限表示为位掩码。将位掩码进行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)

我不知道提问者系统的细节,但可以增加这里概述的系统,以使用不同的逻辑运算符实现不同的组合成行为。


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


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”

© www.soinside.com 2019 - 2024. All rights reserved.