ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-07-05 10:29:31  阅读:183  来源: 互联网

标签:php permissions zend-framework acl zend-acl


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

一个例子就是这样.一个有学院,课程和活动的在线学习网站.每个活动都属于一门课程,每门课程都属于一个教师.我希望能够允许每个教师角色访问所有课程(和继承的事件),但特定教师希望他们的材料是私人的.因此,我使我的资源树的结构具有每个教师的资源节点,并且每个课程都属于教师节点的教师分支,而不是从通用课程节点分支,这为每个课程提供了默认权限.使用新结构,我如何应用我的通用课程权限?对于课程下面的事件也是如此,如果我希望每个事件只有在父课程可读时才可读,但我还想对每个事件应用一组默认权限,我如何组织树以使每个事件继承从它的父和它的通用节点没有多重继承?

对于不同系统的任何问题或意见或建议都是非常受欢迎的.

解决方法:

您的多重继承问题在您的脑海中 – 除非当然可以在多个院系中 – 等等.构建一个额外的“父资源”,可以从基础“课程”中更改ACL.

您不希望课程直接继承教师权限;你可能希望有人能够编辑该教师的课程(TA或其他东西) – 但教师本身不是吗?

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

等等

这将为教师提供课程组,但仍继承默认课程权限.当您添加每个资源时 – 只需将其作为其资源的父资源,该资源是整个资源的父资源.

如果您希望隐藏特定课程的所有活动 – 您只需在活动上设置权限:课程#

如果您希望能够为教师的所有事件设置权限,您可以在事件:Course1上面添加另一个“中间人”父母,该课程也按教师分组事件:事件:教师2:课程1:事件3

我找到了10个权限系统,你不需要(或想要混淆)多重继承.如果您的访问控制比简单树更复杂,则应重新评估访问控制.

标签:php,permissions,zend-framework,acl,zend-acl
来源: https://codeday.me/bug/20190705/1386376.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有