如何使用Zend 2 ACL断言与bjyAuthorize

时间:2014-03-16 08:42:58

标签: php zend-framework2 acl assertions bjyauthorize

我试图在论坛中为角色创建动态加入权限。我的问题是我没有 似乎找到了除Zend自己的APi之外如何使用Zend Framework 2 ACL的任何帮助。

在我的项目中,用户可以在论坛和其他子论坛中创建新的子论坛。
例如论坛 - > some_subforum-> also_has_subForum。每个子论坛应该有 它拥有自己的加入权,例如论坛有两个子论坛,我们有 两个角色,管理员和用户,一个子论坛对两个角色都可见,但另一个角色可见 仅对具有管理员权限的用户可见。

最好的部分来到这里:当管理员创建新的子论坛时,他/她可以指定 每个角色的权限(管理员也可以创建新角色,所以我也不能硬编码) 喜欢读取,读取和写入,修改或不对此子论坛的访问权限。这是我的 问题的根源。我知道我可以使用AcL的断言(?)但是我 在我还使用BjyAuthorize的时候,我不明白如何调用它,它告诉我 使用服务管理器定义断言,但没有提示如何。

当使用断言时,我想我可以(以某种方式)告诉这个断言类是谁 需要加入subforum,他/她有什么角色,然后断言就是这些 到db值,如果用户具有这些权限,则返回true。在db表中,我存储了值 subdomain_id,role_id和forum_permission(例如读取)。

简而言之:

  • 如何在使用zend 2和bjyauthorize时在服务管理器中定义断言?
  • 我可以使用断言实际做到这一点还是其他更好的东西?

1 个答案:

答案 0 :(得分:0)

你需要设置一个断言类("实现Zend_Acl_Assert_Interface"),一个资源类("实现Zend_Acl_Resource_Interface")和一个角色类("实现Zend_Acl_Role_Interface&# 34。)

示例:

$acl->allow('user', 'resource', 'read', new Forum_Assertion());

然后,当您使用您的用户和资源调用isAllowed时,您的断言代码将知道用户是谁,资源(论坛)是什么,以及用户要求的权限。

示例:

if ($this->acl->isAllowed($this->theUser, $this->theForum, 'read'))...