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

2023-11-29

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

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

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


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

您不希望课程直接继承教师权限;您可能希望有人能够为该学院(助教或其他人)编辑课程,但不是学院本身,对吗?

院系、课程和活动。每个 事件属于一个课程,并且每个 教授课程

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

etc

这将为您提供按教师划分的课程组,但仍继承默认课程权限。添加每个资源时,只需将其设为其组资源的父级,而组资源又是整个资源的父级。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何在 ACL 中构建资源树? 的相关文章

  • Laravel Eloquent 预加载:加入同一个表两次

    我有一个users表和一个约会桌子 在约会表中 我有两个用户 ID customer id staff id 我想检索所有带有客户姓名和员工姓名的约会 users table id name appointments table id st
  • 如何在 json 中输出 javascript 日期

    我正在尝试时间线图表 http code google com apis visualization documentation gallery annotatedtimeline html Data Format http code go
  • Magento:如何在 CMS 页面中包含 php 调用

    按照此页面的说明进行操作 http www magento cc how to use php on a cms page html http www magento cc how to use php on a cms page html
  • PHP 的password_verify() 是否可以抵御极长的密码(DoS 攻击)?

    一般攻击场景 2013 年 Django 存在一个普遍漏洞 攻击者可以通过非常大的密码创建极其密集的 CPU 计算 请参阅此处的安全通知 https www djangoproject com weblog 2013 sep 15 secu
  • 内连接 3 个表

    我正在使用 PHP 和 PDO 我需要重新收集连接 3 个表的信息 photos albums 相册照片 该表具有以下结构 photos photo id int path varchar nick varchar date timesta
  • Facebook“赞”按钮回调帮助

    我正在使用此代码进行类似 facebook 的回调 问题是 如果我调用 php 脚本 例如 有人可以看到我的 javascript 并运行此页面 甚至可以向其发送垃圾邮件或在没有先点赞的情况下使用它 我的想法是 我想为每个喜欢该页面的用户提
  • YUI压缩机或类似的PHP?

    我一直在我的测试服务器上使用 yuicompressor jar 来动态最小化已更改的 JavaScript 文件 现在我已经将网站部署到公共服务器上 我注意到服务器的策略禁止使用 exec 或其等效项 因此我不再执行 java 有没有一个
  • PHP 删除字符最后一个实例之前的所有内容

    有没有办法删除某个字符之前的所有内容 包括最后一个实例 我有多个字符串 其中包含 gt e g the gt cat gt sat gt on gt the gt mat welcome gt home 我需要对字符串进行格式化 以便它们变
  • Laravel 5.4 将json保存到数据库

    帮我将 json 保存到数据库 表字段类型 文本 我有带有强制转换数组的模型 class Salesteam extends Model protected casts team members gt array 我想要像这样 index
  • 转义用户数据,无需魔法引号

    我正在研究如何在来自外部世界的数据被用于应用程序控制 存储 逻辑等之前正确地对其进行转义 显然 随着 magic quote 指令在 php 5 3 0 中很快被弃用 并在 php6 中被删除 对于任何想要升级并进入新语言功能 同时维护遗留
  • use 语句顺序会影响 PHP 中的功能吗?

    我使用 PHP 的命名空间已经有一段时间了 我认为它对我的编程来说是一个很好的补充 今天早上我想知道一些关于use陈述 我想知道顺序是否use影响我的 PHP 代码的功能 根据 PHP net 使用别名引用外部完全限定名称或导入的能力是命名
  • Symfony 生成器形式、原则和 M:N 关系

    我有一个基本的 M N 设置 包含三个表 candidate position 和 Candidate position 这是 MySQL Workbench 的 ERD 屏幕截图 现在 我们继续讨论表单 在 symfony 生成器的默认世
  • PHP 中的静态类初始值设定项

    我有一个带有一些静态函数的辅助类 类中的所有函数都需要一个 重 初始化函数来运行一次 就好像它是一个构造函数 有实现这一目标的良好实践吗 我唯一想到的就是打电话init函数 如果它已经运行过一次 使用静态 initialized变种 问题是
  • 细胞的 fpdf 对齐

    我正在尝试使用生成 PDFfpdf我有一个小问题 我需要有 2 个单元格 如下所示 Address Line 1 Version Address Line 2 1 0 City 06 05 2011 我尝试过使用MultiCell 但没有运
  • 从检查元素隐藏 ''

    我有这个 HTML 和 PHP 联系表
  • Laravel,控制器中的 Auth::user()

    Laravel 框架 为什么我无法在 laravel 项目的控制器中使用 Auth user 查看用户是否已登录 Session 是否未连接到控制器 HomeController php public function isauthoriz
  • PHP-如何根据条件配对数组中的项目

    如何将数组中的项目配对 假设我有一个数组Fighters 我想根据他们的情况将他们配对Weights 体重最接近的拳手应作为配对最佳匹配 但如果他们是在同一个团队中 他们不应该配对 团队 1 战斗机A体重为60 战斗机B体重为65 2队 战
  • 创建单个随机 Magento 优惠券

    我遇到了一些麻烦 我想要做的是每次有人订阅我们的时事通讯时 在 Magento 中自动生成一个随机优惠券代码 这张优惠券可减 10 美元 并且有exp 订阅后两周的日期 因此 我正在尝试编写一个简单的脚本 当提交 订阅我们的时事通讯 表单时
  • WordPress - 类别和子类别的嵌套列表

    我正在尝试显示带有嵌套子类别的 WordPress 类别列表 到目前为止 我只能获取父类别列表或不包括父类别的子类别列表 但我无法将两者连接在一起 这是我想要创建的结果 Parent Category 子类别 子类别 Parent Cate
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht

随机推荐

  • 从 $_POST 表单数据 PHP 中删除提交按钮值

    我正在使用此循环打印所有表单 POST 数据 foreach POST as name gt value print name value br 结果的末尾是提交按钮值 提交 编辑 这对我来说会导致错误 因为通过这个 foreac 循环 我
  • PHP firebird将blob文件插入数据库apache突然停止工作

    我目前正在火鸟数据库上插入图像 它单独工作正常 请参阅下面的代码 dbh ibase connect host user pass blh ibase blob create dbh ibase blob add blh data blob
  • 如何使用urllib2获取使用SSLv3加密的网页

    我正在使用 python 2 7 我想获取需要 sslv3 的网页的内容 目前 当我尝试访问该页面时 我收到错误 SSL23 GET SERVER HELLO 并且在网络上进行了一些搜索 导致我找到了以下解决方案 该解决方案修复了 Pyth
  • 使用 this.refs 的弃用警告

    我有一个 React 组件 我想在单击时切换 css 类 所以我有这个 export class myComponent extends React Component constructor super this state clicke
  • 如何使用 Paramiko 等 Python 库通过 Telnet 和 SSH 进行链式连接

    类似于这里提出的问题 使用 python SSH 和 telnet 到本地主机 我正在尝试找到以下问题的解决方案 从服务器A 完全权限 通过Jumhost B 无sudo 我想使用Python连接到多个网络设备 一个接一个就足够了 不必在同
  • Asp.net Mvc区域路由问题

    我希望网站的默认页面为 Login cshtml 我得到异常 错误 未找到视图 登录 或其主视图 或者没有视图引擎支持搜索的位置 搜索了以下位置 我有2个区域 结构如下图所示 我的路由配置如下所示 using System using Sy
  • ARM中如何做除法?

    我正在尝试找到如何在 ARM 中进行除法 因为没有DIV命令 如果可以通过浮点数相乘来完成 9 0 09 通过减法或通过使用库 任何方式都可以 目前我正在使用像这样的循环使用减法进行除法 但我丢失了小数 MOV R0 70 Fahrenhe
  • Google 地图中的自定义标记和航点标记

    我正在寻求帮助 我有下面的谷歌地图代码 工作正常 我唯一需要的是起点上的自定义标记 51 943382 6 463116 并且航路点上没有标记 这可以做到吗 我已经尝试了 Stackoverflow 的几种解决方案 但我对 GM 代码和编程
  • 输入类型=文件和 Spring Boot 的 Angular 2 模板表单

    我有一个包含两个输入的表单 一种是文本类型 另一种是文件类型 我怎样才能将文件传递到后端Spring Boot 以及如何使用 postgresql 数据库存储或获取内容数据 预先感谢您的退货 HTML 文件
  • 使用 VBA 宏选择和复制 Outlook 电子邮件正文

    我是 Excel 中 VBA 宏的初学者 这是 Outlook 中的第一次尝试 但这是我正在尝试做的事情 在 Outlook 2010 中 将宏分配给按钮 按下该按钮时 获取活动电子邮件的整个正文 将正文 包括所有格式和 html 复制到剪
  • 为什么 shell 中 0 为 true,1 为 false?

    false echo 上面会输出1 这与我所知道的所有其他编程语言相矛盾 这其中有什么原因吗 Bash 是一种编程 脚本 语言 但它也是一个 shell 和一个用户界面 如果0是错误 那么程序只能出现一种错误 然而在 Bash 中 任何非零
  • 在数组过滤时响应更新,但在添加元素时不响应更新

    我正在尝试模拟一个能够添加和删除产品的表 但是该组件仅在删除组件时更新 但在添加新行时不会更新 我在用着useState 这是我的数组 const rowss createData 1 Zapatillas 2 200 createData
  • 正确地在图像上绘图

    我正在创建一个小型图像编辑器 现在我试图让用户有机会通过拖动鼠标在图像上绘图 就像 MS Paint 中的铅笔工具一样 我遇到了一些困难 因为当我移动光标太快时 应用程序无法绘制所有应该着色的像素 只有一小部分数字被正确着色 我尝试了两种解
  • 使用 jQuery Ajax 删除 mySQL 表行

    我正在尝试做到这一点 因此当我单击跨度图标时 它会将article id发送到我的php sql页面 该页面会删除我的文章 我使用jQuery Ajax发送id id在jQuery端发送正常 但之后http post 请求已完成 我的表行仍
  • 输入对于数组来说太大

    我有一个小问题 我只是想知道 include
  • Azure Web 应用程序从 AAD 身份验证注销

    我无法从以 Azure Active Directory 作为身份验证提供程序的简单 Azure Web 应用程序注销 用户使用显示的 AAD 登录页面登录站点here 但我正在努力找出如何注销用户 我尝试使用各种未记录的注销网址 例如 h
  • Visual Studio 不将 SVG 图像显示为背景

    我有一个带有 html 文件 Html 5 的 asp net 项目 我正在尝试使用 CSS 3 将 SVG 设置为我的 body 标签的背景 我的文件如下 在我的 Style css 中 当我双击并打开 html 文件时 我可以看到主体充
  • 如何编写一个捕获所有异常的“try”/“ except”块?

    我怎样才能写一个try except捕获所有异常的块 除了光秃秃的except 子句 正如其他人所说你不应该使用 你可以简单地抓住Exception import traceback import logging try whatever
  • 实现引用类型和非引用类型的特征会导致实现冲突

    我正在尝试创建一种特征 并为所有非引用类型提供一种实现 为所有引用类型提供另一种实现 这无法编译 trait Foo impl
  • 我应该如何在 ACL 中构建资源树?

    我想使用 PHP 和 Zend ACL 创建一个极其灵活的权限系统 我希望能够向特定类型的所有对象以及这些对象的实例分配权限 如果查询对象的特定实例并且资源树中不存在该实例 则可以使用 通用 对象的权限集 我的问题是 这需要嵌套 并且我无法