Php ZF2 ZfcUser,BjyAuthorise,注销问题

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

在以下情况下从web应用程序注销:

  • 双击任何公共锚定链接(例如,连续两次单击关于我们的信息)
  • 使用ajax自动完成调用(例如使用Jquery.autocomplete)
  • 使用CKeditor并上载图像(KCFinder上载到服务器)
  • 打开2个或更多选项卡,并快速单击每个选项卡中的链接
  • 通过注销,我的意思是BJAuthorize(zend开发者工具)在操作之前看到我的角色(如会员、memberplus等)。 如果我执行上述任何操作,zfcuser/bjyauthorise是否会丢失其会话/cookie?我得到了BJYauthorise显示的“403禁止”页面。 所有zfcuser信息都将丢失,我需要再次登录

    环境: zf2、zfcuser、bjyautorise+定制路线

    我在module/Member/module.php中有这个

     '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();我相信这就是问题的原因