Zend framework Zend-控制器/操作ACL

Zend framework Zend-控制器/操作ACL,zend-framework,Zend Framework,在我的管理模块中,我有一个名为电子邮件的控制器,我希望大多数操作只能由登录的管理用户访问。然而,我希望有一个行动是可访问的任何人。(这是一种通过URL远程启动的电子邮件功能。)。目前,我将Zend_Auth与Zend_Acl一起使用,如下所示: if ($request->getModuleName() == 'admin') { // access resources (controllers) $acl->addResource('index'); $ac

在我的管理模块中,我有一个名为电子邮件的控制器,我希望大多数操作只能由登录的管理用户访问。然而,我希望有一个行动是可访问的任何人。(这是一种通过URL远程启动的电子邮件功能。)。目前,我将Zend_Auth与Zend_Acl一起使用,如下所示:

if ($request->getModuleName() == 'admin') {
    // access resources (controllers)
    $acl->addResource('index');
    $acl->addResource('reports');
    $acl->addResource('email');
    $acl->addResource('error');

    // access roles
    $acl->addRole(new Zend_Acl_Role('visitor'));
    $acl->addRole(new Zend_Acl_Role('user'));
    $acl->addRole(new Zend_Acl_Role('admin'));

    // access rules
    $acl->deny('visitor');
    $acl->deny('user');
    $acl->allow('admin');

    $resouce = $request->getControllerName();
    $action = $request->getActionName();
    $identity = $auth->getStorage()->read();
    if (is_object($identity)) {
        $role = $identity->role;
    } else {
        $role = 'visitor';
    }

    if (!$acl->isAllowed($role, $resouce, $action)) {
        $request->setModuleName('default')
                ->setControllerName('auth')
                ->setActionName('login');
    }
}

如何更改上述代码以允许“访问者”执行/admin/email/process操作?

这应该可以做到:

$oAcl->allow('visitor','email','functionname');
//or if you want to do both visitor and user
$oAcl->allow(array('visitor','user'),'email','functionname');

将此代码放在您已经编写的访问规则之后。

这应该可以做到:

$oAcl->allow('visitor','email','functionname');
//or if you want to do both visitor and user
$oAcl->allow(array('visitor','user'),'email','functionname');

将此代码放在您已经编写的访问规则之后。

您可以使用
Zend_Acl
创建角色层次结构,该层次结构允许您设置访问页面的最小角色,具有角色x或更高级别的任何人都可以访问该页面

$acl->addRole(new Zend_Acl_Role('visitor'));
$acl->addRole(new Zend_Acl_Role('user'), 'visitor');
$acl->addRole(new Zend_Acl_Role('admin'), 'user');
这样,任何具有管理员角色的人都可以访问
访问者
用户
有权访问的任何内容

您还可以将
数组
作为参数而不是字符串传递


有关更多信息,您可以在上查阅Zend framework官方文档。您可以使用
Zend_Acl
创建角色层次结构,该层次结构允许您设置访问页面的最低角色,任何具有x或更高角色的人都可以访问该页面

$acl->addRole(new Zend_Acl_Role('visitor'));
$acl->addRole(new Zend_Acl_Role('user'), 'visitor');
$acl->addRole(new Zend_Acl_Role('admin'), 'user');
这样,任何具有管理员角色的人都可以访问
访问者
用户
有权访问的任何内容

您还可以将
数组
作为参数而不是字符串传递


有关更多信息,您可以在

上查阅Zend framework官方文档。另外,如果一个函数调用另一个未被明确允许的受保护函数,它会允许吗?另外,如果一个函数调用另一个未被明确允许的受保护函数,它会允许吗?