1

我正在我当前项目中的登录模块上工作。要访问个人资料页面,用户必须登录。为此,我正在针对构造函数中的会话检查登录状态。如果用户未登录页面应重定向到登录页面。

以下是伪代码。

    use Zend\Mvc\Controller\AbstractActionController;
    use Zend\View\Model\ViewModel;
    class StatisticsController extends AbstractActionController
    {
    // variables ------
        public function __construct()
        {
           if(!isset($_SESSION['admin_email']))
           {
            $this->redirect()->toUrl('/admin');
           }
        }
    }

上面的代码给出了以下错误信息

Redirect plugin requires event compose a response

提前致谢

4

1 回答 1

3

您最好在 onDispatch 事件中执行此操作,或者通过附加到事件,或者将代码放入 onDispatch 方法。

您将无法访问构造函数中的任何 ServiceLocator / ServiceManager,因为它们是在类实例化后注入的。

SomeBaseController.php

/**
 * Override, check for login etc
 * 
 * @param \Zend\Mvc\MvcEvent $e
 */
public function onDispatch(\Zend\Mvc\MvcEvent $e) 
{
    if( ! /** SOME CONDITION **/) {
        return $this->redirect()->toRoute('login');
    }

    return parent::onDispatch($e);
}
于 2013-08-16T09:20:15.603 回答