我应该如何在 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 中构建资源树? 的相关文章

  • 是否必须配置 PHP 才能通过 PHP 扫描每个目录的配置 INI 文件(即我的情况下的 .htaccess 文件)?

    我在用着Windows 10 家庭单语言 64 位操作系统在我的机器上 我已经安装了最新的副本XAMPP服务器在我的机器上附带PHP 7 2 7 我从 PHP 手册中阅读了以下页面 扫描目录 https secure php net man
  • PHP - Filter_var 替代方案?

    我构建了一个 php 脚本来输出以表单形式发布的数据 但遇到了问题 网站将运行的服务器运行 PHP 5 1 6 此版本的 PHP 不支持 filter var 我需要知道短期内的替代方案 最好是昨天 但在 Google 或 Stack Ov
  • 自定义 WP 主题时,我应该将导航栏放在“”标签之前还是之后?

    我正在通过制作子主题来自定义 WP 主题 我将 Bootstrap 中的导航栏放入子主题目录中的 header php 文件中 但是 我不确定在哪里放置导航栏代码 我可以把它都放在前面and之后标记成功 例如 无论我选择哪一个 导航栏都显示
  • Smarty输出空白页

    已解决 模板文件错误 我有这样的 Smarty 设置 require once smarty Smarty class php smarty new Smarty smarty gt compile dir compile dir smar
  • SMTP 配置在生产中不起作用

    我正在尝试在提交表单时发送电子邮件 我正在使用 PHPMailer 使用以下配置发送邮件 mail new PHPMailer mail gt isSMTP mail gt Host mail example in mail gt Port
  • 在值中包含换行符

    我有一个 Word 模板 其中 php 代码中定义了值 在PHP代码中 document gt setValue Value1 value1 在word模板中 Value1 如何将包含两个值之间的断线的值包含在单词的值中 Replace n
  • PHP 或 WAMP 不确定是什么

    我已经安装了 WAMP 服务器 2 0 PHP 5 4 3 安装WAMP后我已经重新启动了所有服务并且可以打开 phpinfo 显示良好 phpmyadmin 它也显示得很好 我可以使用数据库 然而 当在 Chrome 中运行简单的 php
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • 如何通过php的require()或include()函数传递变量?

    当我使用这个时 require diggstyle code php page page no 警告是 无法打开流 第 198 行 C xampp htdocs 4ajax gallery core php 中没有错误 错误是 Failed
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • 如何在 yii2 中使用两个不同的模型登录或切换身份类别?

    我想允许用户从两个不同的模型登录 配置文件 user gt identityClass gt app models User one more class here enableAutoLogin gt false authTimeout
  • 使用php将数据存储到文本文件中?

    我正在尝试将数据存储在文本文件中 例如使用 php 将数组存储到文本文件中 而不是存储到 mysql 数据库中 例如 这里是要存储在文本文件中的数据 name gt john age gt 25 location gt australia
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • apache_request_headers() 与 $_SERVER

    据我所知 apache request headers 提供与以下相同的信息 SERVER 但按键略有不同 为什么有人应该使用apache request headers 而不仅仅是从那里获取这些信息 SERVER 我在 Centos 上使
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正
  • 如何使用 PHP 对字符串进行 rot13 处理?

    我有一个很大的 php 代码 我想手动对其进行编码和解码 我的问题是 php 代码里面有很多单引号和双引号 因此我在使用时出现错误str rot13 功能如下 那么正确的语法是什么以及如何使用下面的函数进行编码 str rot13 That
  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • 从 $_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 创建一个极其灵活的权限系统 我希望能够向特定类型的所有对象以及这些对象的实例分配权限 如果查询对象的特定实例并且资源树中不存在该实例 则可以使用 通用 对象的权限集 我的问题是 这需要嵌套 并且我无法