- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想使用 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/
我正在尝试修改一个对象的 ACL,而不创建另一个对象。我不希望删除或覆盖当前的 ACL。每当我使用 object.setACL() 时,它都会覆盖当前的 ACL。 有没有办法保存修改后的ACL而不覆盖
我正在尝试修改一个对象的 ACL,而不创建另一个对象。我不希望删除或覆盖当前的 ACL。每当我使用 object.setACL() 时,它都会覆盖当前的 ACL。 有没有办法保存修改后的ACL而不覆盖
我在客户端和服务器之间有一个代理服务器。 我使用 XDR 读取和修改它们之间的 NFS 消息 例如,如果我想编辑文件大小并获取属性回复我使用结构和函数 GETATTR3res bool_t xdr_G
我正在考虑 RabbitMQ 在创建多用户聊天系统方面的用处。人们可以在不同的房间里聊天,一些是公共(public)的,一些是私有(private)的,还有私有(private)的。是否有可能实现私有
无法让属于“用户”组的用户访问(至少阅读)项目。我已经阅读并尝试了我在互联网上找到的几个例子,似乎没有一个工作。 我现在需要的是:允许属于“用户”组的任何用户读取名为 MYPROJECT 的项目。我有
我正在使用 mosquitto 1.4.5 版本。 我正在尝试让一个单独的插件对 mosquitto 代理的主题订阅进行 ACL 检查,并使用提供的 header 进行发布。 只是为了测试 auth
大家好,这可能是一个愚蠢的问题,但我真的对 ACL、RBAC、DAC、MAC 感到困惑...... 以具有以下用户类型的在线大学管理系统为例: 管理员 房车 教职工 学生 他们每个人都有不同的访问权限
我是环回的新手。我已经为所有用户 ($everyone) 创建了拒绝权限的 ACL。但是我可以通过 swagger 访问所有 API。有人可以解释一下吗?以下是我的 ACL。谢谢。 "acls": [
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 7 年前。 Improve
我们的应用程序使用一个组件,该组件需要我们的可执行文件所在目录中的许可证文件,它恰好是一个 .NET WinForms 应用程序,但我认为这对这个问题无关紧要。当安装在一些 XP Pro 机器上时(目
我正在使用 Web Deploy 将 Web 应用程序部署到我的主机。当使用 Publish 命令从 Visual Studio 运行时,它工作正常。当我尝试使用 MSBuild 的 web 部署进行
我刚刚开始使用 Grails,并且正在尝试配置 spring-security-acl 插件。我一直在关注official plugin tutorial但是在尝试运行我的应用程序时无法通过引导阶段(
谁能建议一种可扩展的设计模式来实现对照片和相册的访问控制,每个都有单独的隐私设置(即所有者、组成员、公开)? 我正在使用 CakePHP,我在 ACL 组件上阅读的示例似乎控制对 Controller
我一直在关注this guide加载我的菜单配置,我认为这是加载菜单的非常好的和干净的方式。 我的问题很简单,有没有办法以与配置数组和某种工厂相同的方式加载 ACL 配置? 如果没有,我如何加载 AC
New-Item -Type Directory -Path "C:\MyFolder" $Acl = Get-Acl "C:\MyFolder" $Ar = New-Object System.Se
在 android 中,我在后端使用 Parse 和 back4app.com,每当我在返回保存回调中使用 myParseobject.saveInBackground() 时,我都会收到错误消息,指
我有一个正在将数据帧写入 ADLS Gen2 存储中的文件的数据 block 笔记本。 它创建一个临时文件夹,输出文件,然后将该文件复制到一个永久文件夹。由于某种原因,该文件没有正确继承 ACL。它创
我陷入了两难的境地。我正在使用 spring-security-acl 及其 jdbc 实现。问题是,我在其他查询中使用 JPA 存储库 (Spring-data-jpa)。我认为,这没问题,因为 J
我有代码可以在“line vty”上查找“access-class”的名称 之后我能够找到 ACL,但随后我想检查 ACL 的每一行以验证“拒绝”和“允许”语句是否具有“log”关键字。如果条目上没有
我正在使用 Cloudera 的 Hadoop CDH 发行版,并且最近从 CDH3 升级到了 CDH4。 在 CDH3 中,我曾经能够将用户名添加到 hadoop-policy.xml 中,用于:
我是一名优秀的程序员,十分优秀!