Zend framework Zend Framework ACL角色和模块

Zend framework Zend Framework ACL角色和模块,zend-framework,acl,Zend Framework,Acl,我在尝试使用ACL来区分我的管理模块中的索引控制器和索引操作,以及我的默认模块中的索引控制器和索引操作,这简直是疯了 我希望登录用户能够访问默认模块的索引控制器,但根本不能访问管理模块。无论我尝试什么,如果我允许访问默认模块的索引,管理模块索引也是可用的 如有任何建议,将不胜感激。谢谢将您的资源定义为模块控制器,将权限定义为操作,这样您就可以拥有类似的功能了 ... // Default module, index controller $this->addResource(new Ze

我在尝试使用ACL来区分我的管理模块中的索引控制器和索引操作,以及我的默认模块中的索引控制器和索引操作,这简直是疯了

我希望登录用户能够访问默认模块的索引控制器,但根本不能访问管理模块。无论我尝试什么,如果我允许访问默认模块的索引,管理模块索引也是可用的


如有任何建议,将不胜感激。谢谢

将您的资源定义为
模块控制器
,将权限定义为
操作
,这样您就可以拥有类似的功能了

...

// Default module, index controller
$this->addResource(new Zend_Acl_Resource('default-index')); 
// Admin module, index controller
$this->addResource(new Zend_Acl_Resource('admin-index'));

// Allow user to access default module, index controller, index and about actions
$this->allow('user', 'default-index', array('index', 'about'));
// Allow admin to access admin module, index controller, all actions
$this->allow('admin', 'admin-index');

...
[编辑]并在控制器插件predispatch中

    ...

    $module = $request->getModuleName();
    $controller = $request->getControllerName();
    $action = $request->getActionName();
    $resource = "{$module}-{$controller}";
    if ($acl->has($resource)) {
        if (!$acl->isAllowed($role, $resource, $action)) {
        }
    }
    ...

我一直在尝试。。。下面的代码给出了以下错误`$acl->add(新的Zend_acl_资源(“管理索引”);$acl->add(新的Zend_acl_资源(“默认索引”);$acl->deny();$acl->allow('guest','default index',array('index');`致命错误:未捕获异常“Zend_Acl_exception”,在/Users/drewfulton/Dropbox/Websites/Parulidae/library/Zend/Acl.php中显示消息“Resource”index“not found”。在这里,您需要使用模块名和控制器名来构造资源,然后再检查是否允许使用用户。这样做了。我遇到的问题是在第二个if语句中,因为我使用的是$controller,而不是您提供的$resource定义。谢谢你的帮助。巨大的储蓄!