问题标签 [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 回答
281 浏览

singleton - Zend Acl 的首选实现方法是什么

在 Zend Framework 1.X 中,以下哪种方法更好,为什么?
方法一:
创建一个扩展 Zend_Acl 的(子)类,用于管理所有的 Acl。它将允许我们使用 $this 对象来使用所有 Zend_Acl 特性/功能。

方法 2:
创建一个自定义类,其中包含 Zend_Acl 对象并对对象执行操作。在这里我们可以创建包装函数并且可以控制对 Zend_Acl 的基本函数的访问并且只使用少数特性。

单例模式也可用于这两种方法,以确保在整个站点中使用相同的 Zend_Acl。

我将寻找一种以后可以轻松移植到 ZF-2.0 的方法。如果有任何其他方法,请提及,我会相应地更新帖子。

更新:除了单例之外,还有其他方法可以在整个站点中维护单个 Zend_Acl 对象吗?您如何看待使用带有方法 1 的单例并使用自定义方法,这将为我们提供 Zend_Acl 的所有预定义方法以及我们的自定义包装器。

0 投票
1 回答
3035 浏览

php - Zend框架中的动态自定义ACL?

我需要一个解决方案,允许经过身份验证的用户访问某些控制器/操作,而不是基于他们的用户类型:即。管理员或普通用户(虽然我稍后可能会使用标准 ACL 添加它)但根据他们用户的当前状态。

例如 :

他们加入网站的时间是否超过 1 周?

他们是否完整填写了个人资料?

实际上,现在我想起来了,有点像他们在这个网站上拥有的特权和徽章。

0 投票
1 回答
586 浏览

zend-framework - Zend_Acl 和动态 Assert

我试图在我的 Zend 代码中暗示一些动态断言,并且一直在使用 [Ralph Schindler][1] 的一篇文章,但我无法让它工作。我想做的是在 de Acl 中创建一个“允许”规则,检查登录的人是否实际上是一段 UserContent 的所有者。

我有一个 User 类和一个 UserContent 类(删除了所有不必要的位):

现在在我的 Acl 类 My_Acl 中,我定义了一个“成员”角色、一个“用户内容”资源和一个“编辑”权限,并希望创建以下允许规则:

其中 Assert 实现了 Zend_Acl_Assert_Interface 类:

我仍在为在实际断言方法中放入什么而苦苦挣扎。

假设我以会员身份登录(所以我的 $_roleId='member'),并想检查是否允许我编辑一段 UserContent,如下所示:

在 assert 方法中,我想放一些类似的东西:

但这给了我错误消息*调用未定义的方法 Zend_Acl_Resource::getUserId()*。奇怪,因为如果我测试资源是否是 UserContent 的实例,我会得到确认:将以下行添加到资产方法:

我确实得到了一个真实的。出了什么问题?

对于测试,我在 UserContent 类中添加了一个额外的公共变量 ownerId,定义如下:

现在,如果我将 $resource->ownerId 添加到 assert 方法,我不会收到任何错误消息,它只是从类中读取值。出了什么问题?$resource是UserContent的一个实例,但是不能调用getUserId方法,但是可以调用公共变量$ownerId??

[1] http://ralphschindler.com/2009/08/13/dynamic-assertions-for-zend_acl-in-zf

0 投票
1 回答
1143 浏览

php - 基于用户角色在 Zend 视图中显示/隐藏元素?

我是 Zend 和 PHP 的新手,我正准备着手开发一个门户类型的应用程序,该应用程序将容纳多个内部应用程序。我已经设置了 Zend_Auth,现在可以通过 Active Directory 登录。

我们一直在讨论使用 Zend_Acl 设置资源,为门户中的每个应用程序设置一个资源。从表面上看,Zend_Acl 似乎可以处理我们需要的授权和对资源的分层访问。

经过一些研究,我发现将 Zend_Acl 与 Zend_Navigation 结合起来很常见,但有时会出现问题。

所要求的是,除了*使用前端控制器插件来检查每个请求的资源访问/权限之外,我们还可以控制视图 (HTML) 中显示给用户的元素。例如,如果用户“Bob”没有访问博客应用程序的权限,我们不希望 Bob 在他的导航菜单上看到它。

对我来说,引入所有这些逻辑以及是否在视图中检查是错误的;我认为他们应该尽可能保持愚蠢。有没有更好的方法来处理这个?根据您的视图代码中的用户角色有条件地显示或隐藏元素对我来说感觉不对。

0 投票
1 回答
106 浏览

zend-framework - Zend 嵌套导航不适用于 ACL

我无法让嵌套的 Zend_Navigation 与 Zend_ACL 一起工作。我使用 XML 来定义我的导航。请在此处参考:http: //pastebin.com/GA8uQdKh

问题是文件标签等嵌套元素不会显示在网页上。我可以通过删除资源元素或关闭 ACL 使它们出现。这是文件标签元素本身:http ://pastebin.com/E7vTYcBy

我究竟做错了什么?如果我的问题中的某些内容没有意义,请随时提出任何问题。

提前致谢。

0 投票
2 回答
2219 浏览

php - 如何调试“最大执行时间”致命错误?

我正在尝试在我的应用程序中使用 Zend_acl。我遵循了“Zend Framework in action”一书。我添加了这个助手:

和引导:

Helper 不在控制器中使用。我尝试了我的应用程序以查看是否一切正常,但出现此错误:

致命错误:第 171 行的 /usr/share/php/ZendFramework-1.11.11/Zend/Filter/PregReplace.php 中的最大执行时间超过了 30 秒

使用此调用堆栈:

我试图增加max_execution_time,但它总是一样的:前四个堆栈仍然不变,第五个反映max_execution_time(30 sec => 31.7462, 40 sec => 42.6546 等等)

所以我怀疑这Zend_Controller_Front->dispatch( )是我问题的根源,但为什么总是需要最长时间?我有点困惑。有人知道我应该在哪里挖吗?

编辑:我在调试中走得更远。当不允许用户时,我现在怀疑我的助手中的 4 个请求设置是错误的。我也编辑了帮助代码并添加了评论。

EDIT2:帕特里克,你说的太对了!!!我重新检查了一下,我陷入了一个无限循环:don't-have-access-to-login-page => go-to-login-page :-D 今天真是浪费时间......无论如何它结束得很好谢谢大家。

0 投票
2 回答
1038 浏览

zend-framework - Zend Framework ACL 用于站点的管理部分

好的,所以我的 zf 应用程序带有一个用户登录系统,如果凭据在数据库中,该系统会将人引导到受限区域。但是,我希望使用相同的登录表单来检查用户角色是否为管理员(在数据库中)以及是否将他们引导到管理员部分......我正在努力了解如何使用 Zend_Acl 执行此操作。此外,ACL 的唯一用途是允许具有 admin 角色的用户进入 admin 部分,我对 ZF 还很陌生,所以我不确定最好的方法是什么。这是我当前的 AuthController 代码

http://codepaste.net/6hzydv

谢谢

0 投票
2 回答
3916 浏览

zend-framework - Zend_Acl,角色和权限存储在数据库中

我想为我的应用程序构建一个具有以下要求的 ACL 系统。

  1. 用户将被分配一个或多个角色。(管理员、员工)等
  2. 角色将具有权限。(Send_Invoices、Send_mail、Delete_Invoices、Send_Estimate)等。
  3. 除了继承的角色之外,用户还将被分配自定义权限。

我的 ACL 数据库结构如下

我已经迁移到 Zend 框架,并且在决定 Zend_Acl 是否允许我实现当前结构时遇到问题。我的问题是。

  1. 我是否可以使用当前数据库结构实现 ACL 以在 Zend Framework 中完成所需的工作?
  2. 有没有更好的实现可以让我在 zend 框架中实现我想要的?

如果有人能为我提供一种开始我需要做的事情的方法,我将不胜感激。任何资源,可以帮助我的链接?

谢谢你。

0 投票
2 回答
966 浏览

zend-framework - ZendFramework 应用程序中的管理部分

我目前有一个应用程序使用 Zend_Auth 进行用户访问。该站点有一个管理部分,我希望一个在我的数据库中具有管理员角色的用户在使用他的凭据时被允许访问。Zend_Acl 是唯一的方法吗?因为我想做的事情似乎有点复杂,或者我的问题会有更简单的解决方案吗?

我已经考虑过这个问题,我现在想知道是否可以有两个身份验证控制器,一个用于用户,一个用于我的管理部分?

0 投票
1 回答
317 浏览

zend-framework - URI 页面的 Zend_Navigation 和 Zend_Acl

我正在尝试以独立的方式组合Zend_NavigationZend_Acl用于 URI 页面(即只有这些 ZF 库)。不幸的是,即使我的意思是让某个角色看不到某些页面,我也会在菜单中看到它们(尽管如果我调用isAllowed,一切都会按预期工作)。

遵循显示我的问题的代码片段:

我怎样才能使上述工作?谢谢!!