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') { 
... 
} 

这样,当您到达登录页面时,它不会尝试再次重定向。

+0

你是对的,我忘了添加路线条件。 谢谢你的回答。 –