gpt4 book ai didi

php - 我应该如何在 ACL 中构建我的资源树?

转载 作者:可可西里 更新时间:2023-10-31 23:35:42 25 4
gpt4 key购买 nike

我想使用 PHP 和 Zend_ACL 创建一个极其灵活的权限系统。我希望能够为特定类型的所有对象以及这些对象的实例分配权限。如果查询对象的特定实例并且资源树中不存在该实例,则可以使用“通用”对象的权限集。我的问题是这需要嵌套,我想不出没有多重继承的方法,而 Zend_ACL 不支持多重继承。

举个例子。一个包含院系、类(class)和事件的在线学习网站。每个事件都属于一个类(class),每个类(class)都属于一个教员。我希望能够允许每个教师角色访问所有类(class)(和继承的事件),但特定的教师希望他们的资料私有(private)。因此,我使我的资源树的结构为每个教员都有一个资源节点,并且每个类(class)都属于教员节点的那个教员分支,而不是从通用类(class)节点分支,为每个类(class)提供默认权限。有了新结构,我该如何应用我的通用类(class)权限?类(class)下方的事件也是如此,如果我希望每个事件仅在父类(class)可读时才可读,但我还想对每个事件应用一组默认权限,我该如何组织树以便每个事件继承来自其父节点并且它是没有多重继承的通用节点?

非常欢迎对不同系统提出任何问题或意见或建议。

最佳答案

您的多重继承问题全在您的脑海中 - 除非当然可以在多个院系中 - 等等。构建一个额外的“父资源”,可以从基础“类(class)”更改 ACL。

您不希望类(class)直接继承教员权限;您可能希望有人能够为该教员(助教或其他)编辑类(class) - 但不是教员本身,对吧?

faculties, courses, and events. Each event belongs to a course, and each course to a faculty

Parent -> middleman -> child
Courses -> Courses:Faculty2 -> Courses:Faculty2:Course1
Events -> Events:Course1 -> Events:Course1:Event3

等等

这将为您提供按教员划分的类(class)组,但仍会继承默认类(class)权限。添加每个资源时 - 只需使其成为其组资源的父级,即整个资源的父级。

如果您希望隐藏特定类(class)的所有事件 - 您只需在 Event:Course# 上设置权限

如果您希望能够对教员的所有事件设置权限,您只需在 Event:Course1 上方添加另一个“中间人”父级,该父级也按教员对事件进行分组:Events:Faculty2:Course1:事件3

我发现对于权限系统,10 次中有 9 次您不需要(或不想混淆)多重继承。如果您的访问控制比一棵简单的树更复杂,您应该重新评估您的访问控制。

关于php - 我应该如何在 ACL 中构建我的资源树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/995925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com