问题标签 [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.
php - Zend_ACL 中的列出规则
我正在使用 zend_acl 来管理我的 Web 应用程序中的 ACL 列表。为了能够显示“管理权限”对话框,我需要有可能获得以下组合的定义规则:
- 为特定资源上的特定角色设置的规则
- 为特定资源上的角色设置的所有规则(谁对此具有哪些权限)
- 已为任何资源上的特定角色设置的所有规则(该角色具有哪些权限)
为了能够显示完整列表,必须始终有一个附加列表,其中包含已继承的规则父角色/资源。
你知道如何解决这个问题吗?
zend-framework - 如何结合 Zend_Ath、Zend_Acl 和 partialview 进行身份验证和资源控制
根据随机性会让你无处不在。Ryan 的博客 Zend Framework 的操作堆栈组件是不需要的,部分视图可以与 Zend_Acl 和 Zend_Auth 结合使用,以验证和控制资源。
我无法在谷歌上找到任何合适的例子来说明它是如何完成的。会很高兴有人会向我展示如何实现这一点。谢谢
php - 如何从控制器插件中的 Zend_Navigation 检索当前页面
我正在使用控制器插件开发身份验证插件。我在 application.ini 文件中定义我的导航配置,然后使用它和数据库用户记录来动态加载 ACL 并将其应用到 Zend_Navigation。此位有效,因为它成功加载了菜单并且仅显示允许用户查看的页面。
但是,这不会阻止用户直接访问该页面。我想要做的是确定用户何时访问他们在控制器插件中无权访问的页面,以便我可以将他们的请求重定向到身份验证页面。
我在想一定有一个函数可以从 Zend_Navigation 检索当前页面,但我找不到它......所以它可能不存在。
无论如何,这是我完整的控制器插件。有人看到解决方案吗?
php - Zend Navigation:我应该在哪里加载私有应用程序中的 ACL“角色”
我正在开发一个“私人”应用程序,您必须登录才能执行任何操作。这让我在为 Zend Navigation 加载角色时遇到了一些问题。目前,我正在引导程序中“初始化 Zend Navigation”;这很好,直到我将 ACL 添加到 Zend Nav。问题是我想从我的身份验证存储中加载“userRole”,但在用户登录之前不会有存储,所以在登录页面上会出现“尝试获取非对象的属性”警告. 这是因为在登录之前,auth 的存储中没有任何内容,auth->userRole
“nothing”也是如此,因为auth->getInstance()->getIdentity()->???
它将是空的,直到用户登录并配置了 auth。
我没有在登录页面使用 Zend Nav,事实上我有一个用于登录页面的替代布局(根本没有导航);'if !$auth->hasIdentity'
(false) 使用登录布局,只在系统范围内显示登录页面,正如我所说的应用程序是完全私有的,所以默认为“访客”角色或类似的东西似乎是一种“肮脏”的方法,因为一旦无论如何,用户登录它都必须重新配置身份验证。只是为了取悦登录页面而设置通用身份验证身份似乎并不正确。
我得到的是,哪里是移动 Zend Nav 的“init”的好地方,或者至少移动配置 ACL 部分?也可以移动整个东西?
这就是我在 Zend Navigation 的 bootstrap.php 中的内容:
在引导程序运行时它'$role = Zend_Auth::getInstance()->getIdentity()->userRole'
是空的(或非对象)。
我所有的 ACL 都发生在控制器中(在动作中),或者有些可能在某个时候发生在模型中,尽管我不期待 Web 服务或任何东西,所以也许它们会留在控制器中,但我有灵活性,因为我在模型中有 ACL(那将是“域”对吗?
我只在 Zend Nav 上使用 ACL 来进行布局、用户体验;根据用户角色,我从 Zend Nav 获得的菜单和链接将显示为“灰色”、不存在或活动(且可见),例如,“用户”角色不会获得很多“管理员”选项,这是由控制器中的 ACL 重新实施,因此人们也不能简单地输入 url 并进入一个区域。
我的另一个想法是,也许我应该考虑将我的登录名转移到这种情况下的引导程序中,但我也不确定这是否是个好主意?
编辑: 这是我放入前端控制器插件的代码:
效果很好;当然,我必须像其他任何插件一样注册我的插件。我也将我的 Auth 检查移至前端控制器插件。
zend-framework - Zend_ACL:如何为多个小团队设计基于角色的 ACL?
基于角色的 ACL 应如何设计用于:
多个团队,每个团队由一名经理和多名成员组成,并在一个地点工作。每个位置可以有多个团队,并且有多个位置。
每个团队的经理只能查看/编辑其团队成员的数据。一个人也可以是多个团队的成员,与位置无关。
我的想法:我想把它分成两部分。第 1 部分:每个团队应该有一个小组。在数据库中维护组成员关系表。第 2 部分:现在,每个用户都可以拥有任何角色。并且可以根据这些角色设计 ACL。但是将根据第 1 部分获取数据。这样可以在不更改代码的情况下添加新团队。这是正确的方法吗?
php - 你会使用断言还是动态 Acl?
我正在实现一个AuthorizationService
,基本上它扩展Zend_Acl
和覆盖authenticate()
方法以使用我自己的适配器。
假设我有User
, Article
, ArticleComment
, ArticleVote
, CommentVote
.
我的规则很简单:
- 会员可以编辑自己的文章
- 会员可以对任何条款进行投票
- 客人不能对评论投票
- 客人每天最多只能投 10 票。
但是,我不确定如何实现这一点,对于最后的规则,很容易,它应该是一个断言,但是,可以编辑自己的文章的成员呢?
我应该创建一个动态 Acl,并创建一个像“Article-545”和一个角色“User-5656”这样的资源,然后创建一个 Acl 规则,还是有一个更通用的“文章”资源和一个通用角色“用户”,并使用断言授权用户 545 编辑文章 5656?
你是怎么做的,有什么建议吗?
php - 应该在哪里使用 Acl 进行过滤?
假设我有三个表:users
、books
和users_books
。
在我的一个观点中,我想显示当前用户可以访问的所有书籍的列表。如果 中存在与用户和书籍匹配的行,则用户有权访问书籍users_books
。
我有(至少)两种方法可以做到这一点:
- 在我在模型
fetchAll()
中的方法中,在表上执行某种类型的操作。books
join
users_books
- 在 Acl 插件中,首先从每本书中创建一个资源。然后,从每个用户中创建一个角色。接下来,根据表允许或拒绝用户访问每个资源
users_books
。最后,在模型的fetchAll()
方法中books
,调用isAllowed()
我们找到的每一本书,使用当前用户作为角色。
我认为最后一个选项是最好的,因为这样我就可以在我的应用程序的其他地方使用 Acl。这将消除执行重复访问检查的需要。
你有什么建议?
zend-framework - 在 Zend_Acl 中定义如何处理 'guest' 用户的问题
对于“来宾”用户可用的每个视图,我都收到以下错误:
注意:尝试在第 35 行的 /home/fiodorovich/public_html/gisele/library/Federico/Plugin/Acl.php 中获取非对象的属性
它所指的行是'$role = $this->_auth->getStorage()->read()->role;' 在:
我知道这只是一个通知,并且它不会在生产中显示,因为错误将被禁用......但这有点让我烦恼。那么我该如何解决呢?
zend-framework - 结合 Zend_Acl 和 Zend_Navigation 时遇到问题
我有一个扩展 Zend_Controller_Plugin_Abstract 的 Federico_Plugin_Acl,它看起来像这样:
这个方法在我的引导程序中可以使用这个类:
像这样设置这些配置,我收到以下错误:
可捕获的致命错误:传递给 Zend_View_Helper_Navigation_HelperAbstract::setAcl() 的参数 1 必须是 Zend_Acl 的实例,给定的 Federico_Plugin_Acl 实例,在 /home/fiodorovich/public_html/gisele/application/Bootstrap.php 第 118 行调用并在 /home 中定义/fiodorovich/library/ZendFramework/library/Zend/View/Helper/Navigation/HelperAbstract.php 在第 333 行调用堆栈
这是意料之中的,因为 Federico_Plugin_Acl 是 Zend_Controller_Plugin_Abstract 的一个实例......不过,如果我扩展 Zend_Acl,我会得到这个错误:
所以......我一直在努力解决这个问题,......但似乎没有让它正常工作......关于我在这里缺少什么的任何想法?
php - Zend Acl - 模块、控制器、动作和模型
我花了一天时间寻找有关如何在 SO 和其他站点中实现 Zend_Acl 的教程和答案。而且我很头疼。:X
我看到人们使用它来允许或禁止访问某些控制器/操作,而其他人则说这种方式是不正确的,应该允许或禁止基于模型的访问。嗯,第二个似乎可行,但是,这意味着对于每个控制器我都需要一个模型?因为看起来,在第二种选择之后,我只能在例如编辑帖子时阻止用户访问。但我想阻止访问编辑帖子的控制器的操作。
如果我想阻止具有角色 X 的用户访问控制器 Z 的操作 Y,如果我遵循第二种选择,我将如何做到这一点?
一个真正的应用程序的例子将非常受欢迎。
此信息可以改进您的答案: 我使用 Doctrine 2 作为 ORM,并且我有一个模块 Admin。我的应用程序的实际结构是这样的: