0

我试图绕过 Zend_Acl 但到目前为止没有成功。我需要帮助,因为我真的被困住了。我的情况是这样的:

我有两个模块

  • 会员
  • 管理员

和两个角色

  • 成员
  • 行政

我设置了一个 Zend_Auth 登录,该登录可以访问成员模块,包括成员和管理员角色。两者都可以在这里做一些事情,但管理员角色也可以访问“管理员”模块,在那里可以做更多的管理员事情。

我设置了一个 Acl 如下:

$acl = new Zend_Acl();

$acl->addRole(new Zend_Acl_Role('member'));
$acl->addRole(new Zend_Acl_Role('admin'), 'member');

$acl->add(new Zend_Acl_Resource('members'));
$acl->add(new Zend_Acl_Resource('administrators'), 'members');

$acl->allow('member', 'members'); 
$acl->allow('admin',  'administrators');


$registry = Zend_Registry::getInstance();
$registry->set('acl', $acl);

我已经保存了这个文件,我在 index.php 页面中调用它。

假设我到目前为止所做的事情是正确的,我的问题是下一步该怎么做?这是我第一次与 Acl 打交道,老实说,我对 all think 的工作有点困惑。能否请你帮忙?非常感谢提前。

4

1 回答 1

3

您已经构建了 ACL 对象。您现在需要使用它,每次您需要检查当前用户是否有权访问其中一项资源时。

为此,您需要从注册表中检索 ACL 对象:

$acl = Zend_Registry::get('acl');

然后查询它:

if ($acl->isAllowed($yourUser, 'members')) {
  // Do the job
} else {
  // some message or redirection
}

您可以在Zend_Acl 文档中查看更多详细信息。

希望有帮助,

于 2011-11-07T12:55:57.880 回答