有谁知道一些与设置分层用户帐户系统相关的好资源?我目前正在设置一个,并正在努力解决一些更复杂的逻辑(尤其是确定权限)。我希望我能够找到一些资源来帮助我。

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

有帮助吗?

解决方案

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

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

其他提示

将给定组的权限集表示为位掩码。将位掩码进行“或”运算即可得到最终的权限集。

@Alex 的更新:

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

从问题来看

嵌套的组层次结构。可以允许/拒绝/拒绝访问阅读,写作,添加和删除(要么明确针对该组,要么由其中一个父母隐式)。好像这还不够复杂,该系统还允许用户成为多个组的成员。——这就是我被困住的地方。我已经设置了所有内容,但是我正在为确定给定用户的脾气的实际逻辑而苦苦挣扎。

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

例如 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)

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

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

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

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

这是关于组的部分:

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

我以前就做过这样的事情,而且它的实现并不简单。您将需要查看 SecurityPermission 类。

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

我之前已经通过使用 XML(我不确定是否会再次这样做)并通过 CLR 存储过程将该 XML 作为权限列表存储在 SQL Server 内的 XML 列中来完成此操作。XML 将有一个称为“权限”的元素,然后该权限实际上是代码内部的 ENUM。每个权限都是 SecurityPermission 类(上面链接)的新实现。用户被绑定到 SQL Server 中定义的组,然后当用户添加/删除到组时,XML 文档将更新以反映他们所属的组的。

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

  • 要求
  • 相交
  • 联盟
  • 不受限制
  • 是子集

等等等等

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

同样,这遗漏了大量细节,但这应该会让您走上正确的道路。

也看一下这个名称空间:[2]: http://msdn.microsoft.com/en-us/library/system.security.permissions.aspx “系统.安全.权限”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top