分层组权限理论/资源?

时间:2020-03-05 18:56:47  来源:igfitidea点击:

有谁知道一些与设置分层用户帐户系统有关的良好资源?我目前正在设置一个,并且正在与一些更复杂的逻辑(尤其是确定权限)进行斗争。我希望我可以找到一些资源来帮助我。

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

解决方案

回答

查看安德鲁文件系统中的权限。它允许用户创建和管理自己的组,同时有选择地分配管理权限和ACL。我们可能会发现许多讨厌的细节已经在模型中为我们解决了。

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

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

这是有关组的部分:

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

回答

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

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

回答

我之前已经做到了这一点,并且没有微不足道的实现。我们将要查看SecurityPermission类。

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

我之前通过利用XML(我不确定我会再做一次)并通过CLR存储的proc将XML作为SQL Server中的权限列表存储在XML列中来完成此操作。 XML将具有一个称为" permission"的元素,然后该许可实际上是代码内部的ENUM。每个权限都是SecurityPermission类的新实现(上面已链接)用户被绑定到SQL Server中定义的组,然后随着将用户添加/删除到组中,XML文档将得到更新以反映他们分开的组的。

一旦用户登录,用户凭据将被加载到应用程序存储(会话)中,然后将被相应地访问。当需要进行授权时,将通过" FromXML"方法将应用程序存储区中的XM1下拉到SecurityPermission中。届时,我将使用以下方法确定用户是否具有权限:

  • 要求
  • 相交
  • 联盟
  • 是不受限制的
  • IsSubSetOf

等等等等

那时,执行需求后,我可以根据我在SecurityPermissions中实现安全例程的方式来确定调用者是否可以访问。

同样,这遗漏了大量细节,但这应该使我们走上正确的道路。

还要看看这个名称空间:[2]:http://msdn.microsoft.com/zh-cn/library/system.security.permissions.aspx" System.Security.Permissions"

回答

将给定组的权限集表示为位掩码。对位掩码进行"或者"运算将得到结果权限集。

@Alex的更新:

我3年前写了这个答案,但我相信我在暗示以下内容...

从问题

a nested group hierarchy. Each group can be allowed/denied access to
  read, write, add, and delete (either explicitly for that group, or
  implicitly by one of its parents). As if that weren't complicated
  enough, the system also allows for users to be members of multiple
  groups. -- This is where I'm stuck. I've got everything set up, but
  I'm struggling with the actual logic for determining pemissions for a
  given user.

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

例如00(使用两位使这里变得简单!)

第一位授予"权限A",第二位授予"权限B"。

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

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

要获得用户在任意组中的权限集,可以对权限集的位掩码执行逻辑"或者":

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)

我不知道发问者系统的详细信息,但是可以概述此处概述的系统,以使用不同的逻辑运算符实现不同的组组成行为。