Session Zend2,Zfcuser-自动注销

Session Zend2,Zfcuser-自动注销,session,zend-framework2,zfcuser,bjyauthorize,Session,Zend Framework2,Zfcuser,Bjyauthorize,我与Zend Framework 2、ZfcUser和BjyAuthorize合作。登录和访问控制工作正常,但在某些情况下,用户会被注销:当他们试图导航到另一个页面时,而当前页面上的页面仍在运行AJAX调用 在Chrome的网络窗口中,它显示AJAX调用已取消,然后是对您尝试导航到的页面的调用,下面的代码检查您是否登录,发现您没有登录($auth->hasintity()返回false),并将您发送到登录页面 $sm = $event->getApplication()->getSe

我与Zend Framework 2、ZfcUser和BjyAuthorize合作。登录和访问控制工作正常,但在某些情况下,用户会被注销:当他们试图导航到另一个页面时,而当前页面上的页面仍在运行AJAX调用

在Chrome的网络窗口中,它显示AJAX调用已取消,然后是对您尝试导航到的页面的调用,下面的代码检查您是否登录,发现您没有登录(
$auth->hasintity()
返回false),并将您发送到登录页面

$sm = $event->getApplication()->getServiceManager();
$auth = $sm->get('zfcuser_auth_service');
$routeParams = $event->getRouteMatch()->getParams();

// List of action non-authenticated users may access
$whitelist = array('login' => 1, 'register' => 1, 'forgotPassword' => 1, 'resetPassword' => 1);

$hasIdentity = $auth->hasIdentity();

if (!$hasIdentity && !array_key_exists($routeParams['action'], $whitelist) ) {
    $targetUrl = $event->getRouter()->assemble(array(), array('name' => 'zfcuser/login', 'absolute' => true));
    $response = $event->getResponse();
    $response->getHeaders()->addHeaderLine('Location', $targetUrl);
    $response->setStatusCode(302);
    $response->sendHeaders();
}
很明显,会议就这样消失了?我很难弄清楚它是如何保存的/保存在哪里的。使用了ZfcUser\Authentication\Storage\Db,但它使用Storage\Session作为存储,现在我不确定这是什么类


以前有人遇到过类似的情况,或者有人建议去哪里检查?

为什么不使用BjyAuthorize的警卫来执行重定向策略
Storage\Session
如果ZF2s会话包装器没有什么特别之处,chrome是否会说会话已经消失?现在你只是在做一个假设,开发工具可以肯定地告诉你;)因为我不知道什么是重定向策略。如果它是BjyAurhorize的一部分,我在任何地方都找不到它的文档。我花了几天的时间试图追踪到底发生了什么,但并没有走得更远,但会议似乎消失了。我会看看Zend开发者工具是否有帮助,谢谢。谢谢。在查看之后,我认为检查某人是否登录,以及之后他们是否有权查看给定的站点对于我们的情况更有意义-如果登录用户试图访问他们无权访问的站点的一部分,将他们重定向到登录站点没有多大意义。@Sam我如何跟踪用户的会话是否在zf2中过期,如果会话过期,我想将他注销到数据库中,这样他/她就不会再在线查看了。目前我没有使用zfcuser,它会有帮助吗?