我正在创建一个acl控制器插件,用于检查用户是否有权使用该资源并重定向到错误控制器来处理它。我怎么去做这个?
答案 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);
如果未登录或权限不足,请求将被修改为转发到登录页面或错误控制器。