Session 如何在Zend Framework 2中配置Module.php,以便在用户不在会话中(如果他未登录)时重定向用户?

Session 如何在Zend Framework 2中配置Module.php,以便在用户不在会话中(如果他未登录)时重定向用户?,session,zend-framework,login,bootstrapping,Session,Zend Framework,Login,Bootstrapping,因此,问题是如何在模块中配置Module.php以检查用户是否正在会话中? 如果他不是,我想将他重定向到登录页面 如果用户不在会话中(未登录),我不希望用户有权执行其他操作(控制器)。这应该通过ZF2中的事件来完成,以了解更多详细信息:此代码也可能对您有所帮助 public function init(){ //将事件附加到EventManager $events=StaticEventManager::getInstance(); //在分派前添加身份验证事件 $events->attach(

因此,问题是如何在模块中配置Module.php以检查用户是否正在会话中? 如果他不是,我想将他重定向到登录页面


如果用户不在会话中(未登录),我不希望用户有权执行其他操作(控制器)。

这应该通过ZF2中的事件来完成,以了解更多详细信息:此代码也可能对您有所帮助

public function init(){
//将事件附加到EventManager
$events=StaticEventManager::getInstance();
//在分派前添加身份验证事件
$events->attach('Zend\Mvc\Controller\AbstractActionController','dispatch',数组(
美元这个,
“authspatch”
), 110 );
}
公共功能验证($event){
$target=$event->getTarget();
$serviceLocator=$target->getServiceLocator();
//做任何你想检查用户身份的事情
$url=$event->getRouter()->汇编(数组(
“控制器”=>“”
),数组(
“名称”=>“
) );
$response=$event->getResponse();
$response->setHeaders($response->getHeaders()->addHeaderLine('Location',$url));
$response->setStatusCode(302);
$response->sendHeaders();
退出();
}

不要使用重定向,使用'route'事件执行setParam()方法,请参见以下类似内容:

$e->getRouteMatch()
->setParam('controller', 'Application\Controller\Login')
->setParam('action', 'login');

是否有更好的方法从Module.php重定向?我真的不喜欢在不使用ZF的内部重定向机制的情况下直接发送标题。也在这里粘贴这段代码,这将是一些快速参考,但这不会改变显示的URL吗?有办法吗?
$e->getRouteMatch()
->setParam('controller', 'Application\Controller\Login')
->setParam('action', 'login');