zf2会话验证失败


zf2 session validation failed

我正在使用zf2、rbcomments、条令、zfcuser和samuser实体。。。我有一个问题,在启动之前,我的应用程序抛出"会话验证失败"错误。除了身份验证(由zfcuser完成,而不是手动完成)之外,我在任何地方都不使用会话。这是调用堆栈:

Additional information:
Zend'Session'Exception'RuntimeException
File:
C:'wamp'www'vendor'zendframework'zendframework'library'Zend'Session'SessionManager.php:111
Message:
Session validation failed
Stack trace:
#0 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'Session'AbstractContainer.php(78): Zend'Session'SessionManager->start()
#1 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'Authentication'Storage'Session.php(63): Zend'Session'AbstractContainer->__construct('Zend_Auth', NULL)
#2 C:'wamp'www'vendor'zf-commons'zfc-user'src'ZfcUser'Authentication'Storage'Db.php(116): Zend'Authentication'Storage'Session->__construct()
#3 C:'wamp'www'vendor'zf-commons'zfc-user'src'ZfcUser'Authentication'Storage'Db.php(42): ZfcUser'Authentication'Storage'Db->getStorage()
#4 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'Authentication'AuthenticationService.php(134): ZfcUser'Authentication'Storage'Db->isEmpty()
#5 C:'wamp'www'vendor'zf-commons'zfc-user'src'ZfcUser'View'Helper'ZfcUserIdentity.php(23): Zend'Authentication'AuthenticationService->hasIdentity()
#6 [internal function]: ZfcUser'View'Helper'ZfcUserIdentity->__invoke()
#7 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'View'Renderer'PhpRenderer.php(400): call_user_func_array(Object(ZfcUser'View'Helper'ZfcUserIdentity), Array)
#8 C:'wamp'www'module'Application'view'layout'layout.phtml(118): Zend'View'Renderer'PhpRenderer->__call('zfcUserIdentity', Array)
#9 C:'wamp'www'module'Application'view'layout'layout.phtml(118): Zend'View'Renderer'PhpRenderer->zfcUserIdentity()
#10 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'View'Renderer'PhpRenderer.php(507): include('C:''wamp''www''mod...')
#11 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'View'View.php(205): Zend'View'Renderer'PhpRenderer->render(Object(Zend'View'Model'ViewModel))
#12 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'Mvc'View'Http'DefaultRenderingStrategy.php(102): Zend'View'View->render(Object(Zend'View'Model'ViewModel))
#13 [internal function]: Zend'Mvc'View'Http'DefaultRenderingStrategy->render(Object(Zend'Mvc'MvcEvent))
#14 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'EventManager'EventManager.php(468): call_user_func(Array, Object(Zend'Mvc'MvcEvent))
#15 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'EventManager'EventManager.php(207): Zend'EventManager'EventManager->triggerListeners('render', Object(Zend'Mvc'MvcEvent), Array)
#16 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'Mvc'Application.php(347): Zend'EventManager'EventManager->trigger('render', Object(Zend'Mvc'MvcEvent))
#17 C:'wamp'www'vendor'zendframework'zendframework'library'Zend'Mvc'Application.php(300): Zend'Mvc'Application->completeRequest(Object(Zend'Mvc'MvcEvent))
#18 C:'wamp'www'public'index.php(26): Zend'Mvc'Application->run()
#19 {main}

更多可能有帮助的信息(唯一尚未添加的侦听器):

public function onBootstrap(MvcEvent $mvcEvent)
{
    $zfcServiceEvents = $mvcEvent->getApplication()->getServiceManager()->get('zfcuser_user_service')->getEventManager();
    $zfcServiceEvents->attach('register', function($e) use($mvcEvent) {
        $app = $mvcEvent->getApplication();
        $sm = $app->getServiceManager();
        $user = $e->getParam('user');
        $entityManager = $sm->get('Doctrine'ORM'EntityManager');
        $roleRepo = $entityManager->getRepository('SamUser'Entity'Role');
        $defaultRole = $roleRepo->findOneBy(array('id'=>2));
        $user->addRole($defaultRole);
    });
}

我尝试了一些事情(比如在供应商中打印会话,似乎没有什么问题)。。。有什么想法吗?

附言:我怀疑这与布局有关,我试图通过使用if(!$this->zfcUserIdentity()){ 来查看用户是否具有身份

当Google Chrome更新并更改其UserAgent字符串时,我就遇到了这种情况。会话验证通知,并引发异常。在配置中查找['session_manager']['validators']并删除HttpUserAgent

您的现有会话仍然需要通过删除其cookie来烘烤,然后继续进行此UserAgent检查将不会发生。

(最好是安静地开始一个新的会话,而不会出现大爆炸。我正在研究…)