Php ZF2 ZfcUser,BjyAuthorise,注销问题
在以下情况下从web应用程序注销:Php ZF2 ZfcUser,BjyAuthorise,注销问题,php,session,zend-framework2,logout,zfcuser,Php,Session,Zend Framework2,Logout,Zfcuser,在以下情况下从web应用程序注销: 双击任何公共锚定链接(例如,连续两次单击关于我们的信息) 使用ajax自动完成调用(例如使用Jquery.autocomplete) 使用CKeditor并上载图像(KCFinder上载到服务器) 打开2个或更多选项卡,并快速单击每个选项卡中的链接 通过注销,我的意思是BJAuthorize(zend开发者工具)在操作之前看到我的角色(如会员、memberplus等)。 如果我执行上述任何操作,zfcuser/bjyauthorise是否会丢失其会话/cook
'Zend\Session\SessionManager' => function ($sm) {
$config = $sm->get('config');
if (isset($config['session'])) {
$session = $config['session'];
$sessionConfig = null;
if (isset($session['config'])) {
$class = isset($session['config']['class']) ? $session['config']['class'] : 'Zend\Session\Config\SessionConfig';
$options = isset($session['config']['options']) ? $session['config']['options'] : array();
$sessionConfig = new $class();
$sessionConfig->setOptions($options);
}
$sessionStorage = null;
if (isset($session['storage'])) {
$class = $session['storage'];
$sessionStorage = new $class();
}
$sessionSaveHandler = null;
if (isset($session['save_handler'])) {
// class should be fetched from service manager since it will require constructor arguments
$sessionSaveHandler = $sm->get($session['save_handler']);
}
$sessionManager = new SessionManager($sessionConfig, $sessionStorage, $sessionSaveHandler);
if (isset($session['validator'])) {
$chain = $sessionManager->getValidatorChain();
foreach ($session['validator'] as $validator) {
$validator = new $validator();
$chain->attach('session.validate', array($validator, 'isValid'));
}
}
} else {
$sessionManager = new SessionManager();
}
Container::setDefaultManager($sessionManager);
return $sessionManager;
},
我一直在试图找出是什么导致了这种情况,最初的想法是走向会话再生。我的本地测试计算机的负载相对较低(即速度较慢),因此我假设ZF2尝试重新生成以某种方式锁定的会话,然后说‘嘿,你没有登录,我将清除会话并将你踢出去……!’但这并不是一个明确的结论
是否有人知道或有过在尝试访问他们的网站时“不那么随机”注销这一或类似问题的经验
我是否应该进一步研究课程,还是完全处于错误的领域
更新:
查看chrome developer tools工具栏中的“网络”:在一个连续单击两个不同链接的简单示例中,保留的网络日志显示初始请求已取消,下一个请求(即单击的第二个链接)显示403禁止响应。
i、 e.我在一个由路线守卫控制的区域内有2条链路(链路A和链路B)。
如果我单击链接A,页面开始请求/响应过程,我通过单击链接B来中断此过程,则链接A被“取消”,而链接B突然未经验证。
这种“取消”请求似乎是所有情况下的共同主题,也是导致我进退两难的原因。
请无论如何帮忙。
p、 我将尝试从一个新的ZendSkeletonApp/ZfcUser/BJauthorize开始,看看是否发生了这种情况,但还没有花时间对此进行调查。我相信这是人为错误! 如上所述,这个问题很可能是在bootstrap()方法的Module.php中出现的。 尝试在此处重新生成会话ID导致错误
//$sm = $e->getApplication()->getServiceManager();
//$session = $sm->get('Zend\Session\SessionManager');
//$session->start();
//var_dump($_SESSION);
$container = new Container('wadmin');
if (!isset($container->adminId)) {
//$session->regenerateId(true);
$container->adminId = null;
}
再一次,是人为错误,当我开始在管理部门工作时,我才意识到这一点。
我不相信这篇文章对任何人都有帮助,所以可能最好放弃它…?刚刚看到这篇文章:。。。看起来像是一个类似的问题,尽管我不知道OP是如何解决的。额外的变化导致这个问题被“解决”。改变了两点。1.主体$(document.dblclick(函数(e){e.preventDefault();})中的jquery;2. // $会话->重新生成ID(true);已被禁用。我有一个自定义的$session->start();我相信这就是问题的原因