1

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

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

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

当使用断言时,我想我可以(以某种方式)告诉这个断言类谁需要加入子论坛,他/她有什么角色,然后断言将这些角色与 db 值进行比较,如果用户拥有这些权限,则返回 true。在 db 表中,我存储了值 subdomain_id、role_id 和 forum_permission(例如读取)。

简而言之:

  • 使用zend 2和bjyauthorize时如何在服务管理器中定义断言?
  • 我真的可以使用断言来做到这一点,还是会有其他更好的方法?
4

1 回答 1

0

You need to set up an assertion class ("implements Zend_Acl_Assert_Interface"), a resource class ("implements Zend_Acl_Resource_Interface"), and a role class ("implements Zend_Acl_Role_Interface").

example:

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

Then when you call isAllowed with your user and your resource, your assertion code will know who the user is, what the resource (forum) is, and what they permission the user is asking for.

example:

if ($this->acl->isAllowed($this->theUser, $this->theForum, 'read'))...
于 2014-04-08T21:32:31.410 回答