我不确定从资源对象调用setRedirect是否是最好的方法。但我想知道为什么这似乎没有做任何事情。我在predispatch控制器插件中有这个
function preDispatch(Zend_Controller_Request_Abstract $req) {
...
if (!$acl->isAllowed($role, $resource, $privilege)) {
...
$res = $this->_response;
$res->setRedirect('/error/?error-handler=unauthorized', 403);
}
}
如果您更喜欢整个代码,请点击@ pastebin
答案 0 :(得分:4)
setRedirect()
不会阻止dispatchloop执行。要进行重定向,您必须发送标题并退出流程。
$res->setRedirect('/error/?error-handler=unauthorized', 403);
$res->sendHeaders();
exit();
更好的方法是使用重定向器Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector')->gotoUrl()