我正在当前项目中使用登录模块。为了访问配置文件页面,用户必须登录。为此我正在检查构造函数中的会话的登录状态。如果用户未登录页面,则应重定向到登录页面。
以下是psedo代码。
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
提前致谢
答案 0 :(得分: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);
}