0

我在 Module.php 中的 Zend Framework 2 中正确重定向有一些问题。Iceweasel 浏览器显示以下信息:“页面未正确重定向”。

我的代码很简单,但似乎会产生一些问题:

$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 会对上述消息做出反应?

4

1 回答 1

0

您将进入无限重定向循环。由于所有 Module 类都会在每次请求时实例化,因此每次都会调用此事件绑定。你需要添加类似的东西

$route = $e->getRouteMatch()->getMatchedRouteName();
if(!$auth->hasIdentity() && $route !== 'login') {
...
}

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

于 2013-08-05T15:59:14.163 回答