Zend Framework ACL角色和模块

时间:2012-01-31 17:12:16

标签: zend-framework acl

我疯狂地尝试使用ACL区分管理模块中的索引控制器和索引操作以及默认模块中的索引控制器和索引操作。

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

任何建议都将不胜感激。谢谢

1 个答案:

答案 0 :(得分:5)

将您的资源定义为module-controller,将权限定义为action,然后您就可以拥有类似的内容

...

// 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');

...

[编辑]并在你的控制器插件预发送

    ...

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