Zend Framework 2模块重定向页面没有正确重定向
问题描述:
我在Module.php中的Zend Framework 2中正确重定向时遇到了一些问题。 Iceweasel浏览器显示以下信息: “页面未正确重定向”。Zend Framework 2模块重定向页面没有正确重定向
我的代码很简单,但似乎也产生一些问题:
$eventManager->attach(\Zend\Mvc\MvcEvent::EVENT_DISPATCH, function ($e) {
$auth = new AuthenticationService();
if (!$auth->hasIdentity()) {
$url = $e->getRouter()->assemble(array(), array('name' => 'login'));
$response = $e->getResponse();
$response->getHeaders()->addHeaderLine('Location', $url);
$response->setStatusCode(302);
$response->sendHeaders();
return $response;
}
});
任何人都可以给我一些ZF2尖为什么Iceweasel与上述消息作出反应?
答
您将进入无限重定向循环。由于所有的Module类都是在每个请求上实例化的,因此每次都会调用此事件绑定。您需要添加如
$route = $e->getRouteMatch()->getMatchedRouteName();
if(!$auth->hasIdentity() && $route !== 'login') {
...
}
这样,当您到达登录页面时,它不会尝试再次重定向。
你是对的,我忘了添加路线条件。 谢谢你的回答。 –