问题标签 [zend-acl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1692 浏览

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

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

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

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

0 投票
1 回答
333 浏览

zend-framework - Zend 框架:实现 Zend_Acl_Resources

我应该如何实现 Zend_Acl_Resources?我有类似的东西吗:

在控制器动作中?我不知何故认为可能有更好的方法......但想不出。

0 投票
3 回答
334 浏览

zend-framework - Zend-Framework:我们如何在没有模块的情况下做到这一点?

抱歉,这是一个很长的问题,但我想在这里进行一些讨论。

我是 zend 的新手,并尽量避免使用模块,因为我认为 zend 的视图方面非常灵活,模块会增加额外的目录和混乱。但是我想知道一件事。我正在构建的应用程序非常大,它实际上在应用程序中具有模块概念。

我知道如果使用模块,事情可以更有条理,您可以将模块放在自己的目录中,并拥有单独的视图和控制器等。

但是我决定以以下形式模拟模块目录

--lang/module(实际上是控制器)/controller(就是动作)/action(就是子动作)/other-params/--

我们如何进行这种模拟

我最初的想法是向应用程序添加另一条路线,将第四个参数作为子动作。例如

类 some_controller 扩展 Zend_Controller_Action{

类似的东西。这有意义还是有其他方法?通过这种方法,我们如何将 Zend_ACL 集成为如何将“假子操作”添加为资源?谢谢你。

0 投票
4 回答
2978 浏览

security - 访问控制列表最佳实践 - ACL - 为攻击站点的用户设置负面角色

语境

我刚刚阅读了有关 Zend ACL http://framework.zend.com/manual/en/zend.acl.html

问题

我在一台服务器上运行三个 Zend 应用程序。

  • 我的前端应用
  • 我的前端成员应用程序
  • 我的后端应用程序(站点所有者的管理员)

在我正在考虑使用两种类型的 ACL 的应用程序中。

  • 应用程序范围的 ACL - ''app ACL'' 权限只是 - “访问”(或者可能称之为“读取”,(甚至是“SendHTTPRequests”))
  • 帐户范围 - 将所有其他权限留给单个“帐户 ACL”

我认为这将更容易阻止垃圾邮件发送者和其他攻击者

也许有这样的规则:

我的前端应用程序访问控制

  • 名称 = 攻击者
  • 唯一权限 = 无
  • 继承权限 = N/A

  • 姓名 = 客人
  • 唯一权限 = SendHTTPRequests
  • 继承权限 = N/A

  • 姓名 = 成员
  • 唯一权限 = SendHTTPRequests
  • 从 = 来宾继承权限

  • 名称 = 管理员
  • 唯一权限 =(所有权限)
  • 继承权限 = N/A

其他应用程序将有更严格的规则来拒绝访客等


所以要回答的问题是:

将“攻击者”(负面角色)的角色分配给用户是否会让您觉得这是一件明智的事情。

或者这与一般最佳实践相反?

0 投票
1 回答
355 浏览

php - Zend_Acl 是必要的吗?

我有一个基于角色的权限系统,我不确定 Zend_Acl 是否必要,所以我想问一下我是否正确。

有问题的 Web 应用程序没有单独的管理屏幕,任何人都可以访问所有控制器/操作。所以我无法想象在这样的开放系统中我可以称之为“资源”。

但是某些用户角色可以看到未按用户 ID 过滤的网格 - 因此超级管理员可以看到所有数据,而“x 管理员”可以看到所有“x”数据。

在这种情况下 Zend_acl 系统是否过度?没有它,事情会很简单,我只需在 init() 中获取用户角色并在控制器的某些部分检查它。

0 投票
2 回答
978 浏览

php - 数据库驱动导航中的登录/注销链接?

我有一个数据库驱动的导航,主要由两个表组成:menus和一个menu_items,这对于纯“静态”链接很有效,但现在我需要一个动态链接(登录/注销)。

我的menu_items表格只是由管理员手动添加的页面链接组成。所以现在我需要调整表格和模型,以便它可以处理“动态”链接。

这是 menu_items 表的架构:

菜单 id 对应另一个表,例如 1 是主导航,2 可以是实用导航。位置是指相对于显示菜单项的每个菜单的顺序。链接只是一个字段,例如'/user/login'。

我正在遍历我的每个菜单并创建导航容器并为此使用 Zend Navigation。

这是我用于登录区域的逻辑,我需要将其移至动态导航中:

看起来我需要为每个菜单项的访问级别添加一个新列,然后更新我的菜单模型以说明用户是否登录并查询菜单项的新访问列值,或者类似的东西线。有人有什么建议吗?

0 投票
1 回答
442 浏览

zend-framework - Zend_Acl 模块化类系统

大家好,我从 Zend 开始,并试图了解它的工作方式(到达那里),并且使用 Acl 类,人们似乎在一个文件中声明了所有角色和资源。现在对我来说,如果该人仅以基本用户身份登录,甚至只是网站的访客/访客,这似乎有点浪费系统资源。所以我在想是否有可能有不同的类来设置角色取决于当前用户的角色/资源。

我目前的想法是在引导程序中对角色使用 switch/case,并根据角色名称加载单个 Acl 类(例如,'visitor' => 'Model_VisitorAcl'、'users' => 'Model_UserAcl' 和 ' admin' => 'Model_AdminAcl'),每个都有一个对应的类文件。然后在类文件中为每个文件做一些事情。这是可行的,目前我可以将我的所有“管理员”acls 定义为一个(通过 admin-user-visitor 的权限层次结构回溯),然后在“用户”中具有“用户”-“访问者”角色和资源。

但是,这似乎不是最好的方法,好像我想更改“用户”的角色权限,我需要为“用户”和“管理员”更改它。这显然不是 2 个角色的问题,但在更大的系统上显然是。

所以我尝试了类似的东西

尝试运行 Model_UserAcl 构造函数,从而设置角色 'user',但这似乎不起作用,抛出“未捕获的异常 'Zend_Acl_Role_Registry_Exception' 和消息 'Parent Role id 'users' 不存在'”错误。

那么下一步是什么?每个模块都有单独的包含文件,并且需要的类是否根据需要包含它们?

还是我只是在这个问题上大发雷霆?

谢谢,心理学

0 投票
1 回答
20390 浏览

php - 实用的 Zend_ACL + Zend_Auth 实现和最佳实践

语境:

我的问题与我正在开发的论坛非常相似,其中有:

  1. 有权查看话题但无法回复或投票的客人
  2. 具有足够代表的成员可以编辑/投票其他线程,默认情况下他们可以回复并具有与访客相同的权限
  3. 几乎可以做任何事情的管理员

我希望在站点范围内应用此 ACL,并默认拒绝所有资源。

我阅读了使用 Zend_Acl 的基础知识——因为您基本上创建角色(来宾、成员、管理员)并拒绝或允许这些角色使用资源(控制器、方法)。该文档对您应该如何在应用程序中实际实现 acl 代码并不是很具体,所以我去看了 SO..

遇到了来自 marek的一个非常有用的 stackoverflow答案,它为这个问题提供了一些启示,但是由于我的不熟悉,我仍然无法完全理解如何在考虑到最佳实践的情况下正确实施这一点。

海报configAcl.php在应用程序根目录中有一个静态文件,它初始化 acl 对象,添加角色,从每个控制器中创建资源,授予admin对所有内容的访问权限,授予normal对除管理员以外的所有内容的访问权限,并将 acl 对象存储在注册表中以供以后使用.

问题 #1 - 此代码应该在引导程序中,还是在这样的独立文件中?如果是这样,如果它在里面说,图书馆目录会更好吗?

它的第二部分是一个扩展 Zend Controller Plugin Abstract 类的新类,它允许它被挂钩auth/login,逻辑基本上是如果登录失败,它会重定向.. 否则它从注册表中获取 acl 对象,获取身份,并确定是否允许用户查看此资源。

问题 #2 - 我将如何对实际返回用户身份的身份验证插件部分进行编码?我意识到他在下面有一些代码生成了一个 Auth 适配器 db 表对象,该对象将通过用户 ID 和凭据(散列通过检查)查询数据库表的列。我对这与 getIdentity 部分的匹配位置感到困惑。

假设我的用户表由以下数据组成:

其中级别 3 = 管理员,2 = 成员,1 = 访客。

问题 #3 - 将上述身份验证代码放入的好地方到底是哪里?在登录控制器内部?

问题 #4 - 另一位发帖人回复了他关于如何在模型中完成 acl 逻辑的文章,但他使用的特定方法不受本机支持并且需要解决方法,这可行吗?这真的是理想的做法吗?

0 投票
1 回答
222 浏览

zend-framework - 如何在 ACL 中表示不同的应用程序域?

我正在开发一个 Web 应用程序,其中不同的用户组对资源具有不同的访问权限。到目前为止,我猜没有什么特别的,但有一个警告;该应用程序被划分为“域”,因此我们的每个客户组织都有自己的内容。在这里,我使用一个更简单的模型来说明我的问题。

每个域具有相同的资源类型,但每个资源实例仅连接到一个域。这是一个域的样子:

我提出了两种不同的方法来使用 Zend_Acl 实现这一点,第一种是简单地为不同的域使用不同的 ACL,为每个域复制上述内容。第二种是仅使用一个 ACL 并为每个域添加新角色:

第二种方法的优点是用户可以是一个域的管理员,同时是另一个域的编辑器(实际上可能会发生)。但它也有一个缺点,即角色不是静态的——我们每次添加或删除域时都需要生成。

这些方法中的任何一种都有用,还是有更好的方法来处理多个域?

0 投票
1 回答
3241 浏览

zend-framework - Zend:视图助手中的 ACL 逻辑

背景资料:

我在我的admin模块中,我在modules/admin/views/helpers/AdminPanel.php. 我有一个布局插件,它强制我的视图使用admin/views/layouts/default.phtml.

我正在尝试访问我的 ACL 对象以确定用户是否在视图助手的上下文中拥有资源,然后通过解析 configs/admin-nav.xml 确定是否返回管理面板 html 或不返回任何内容一点也不。

我在我的管理布局中这样称呼它:

以及空白的类代码,我需要访问 acl 对象:

我试过这个:

但这可能不是我想要的,因为它会强制views/layouts/default.phtml加载默认模块并发生错误。

这是我的全局引导文件: