Zend Framework:如何编辑错误控制器来处理登录所需/ auauthorized访问错误?

时间:2010-08-02 12:27:46

标签: zend-framework

我正在创建一个acl控制器插件,用于检查用户是否有权使用该资源并重定向到错误控制器来处理它。我怎么去做这个?

1 个答案:

答案 0 :(得分:1)

在SO上查看这个问题:Help with Zend ACL 另一个很好的ACL / Auth教程可以在devzone上找到:Zend_Acl / Zend_Auth Example Scenario(代码列表不完整但看看评论“THE MISSING PIECES”)

重要的部分在preDispatch插件中:

$controller = $request->controller;
$action     = $request->action;
$module     = $request->module;
$resource   = $controller;

if (!$this->_acl->isAllowed($role, $resource, $action)) {
    if (!$this->_auth->hasIdentity()) {
        $module     = 'default';
        $controller = 'login';
        $action     = 'index';
    } else {
        $module     = 'default';
        $controller = 'error';
        $action     = 'privileges';
    }
}

$request->setModuleName($module);
$request->setControllerName($controller);
$request->setActionName($action);

如果未登录或权限不足,请求将被修改为转发到登录页面或错误控制器。