Zend \ Session \ Container会话验证失败异常-对象(关闭)ZF2 [英] Zend\Session\Container Session validation failed exception -- Object(Closure) ZF2
问题描述
我正在尝试在ZF2应用程序中使用身份验证和会话.到目前为止,我有以下代码:
I'm trying to use authentication and sessions in a ZF2 App. So far I have the follow code:
在我的Module.php中:
In my Module.php:
// (...) rest of code
public function getServiceConfig()
{
return array(
'factories' => array(
// (...) Other factories
// Authentication Service
'AuthService' => function($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$dbTableAuthAdapter = new DbTable($dbAdapter,
'sec_user','login','password');
$authService = new AuthenticationService();
$authService->setAdapter($dbTableAuthAdapter);
return $authService;
},
),
);
}
// (...) rest of code
然后在我的Controller Login(控制器登录)操作中,我有:
Then in my Controller Login action I have:
use Zend\Session\Container;
// (...) rest of code
public function loginAction()
{
$this->getAuthService()->getAdapter()
->setIdentity('testlogin')
->setCredential('testpass');
$auth_result = $this->getAuthService()->getAdapter()->authenticate();
if ($auth_result->isValid()) {
$session = new Container(); // Exception line
$session->login = 'testlogin';
// (...) other code
}
}
// (...) rest of code
代码工作正常,可以成功验证凭据,但是当我尝试使用在文档中找到的最简单的示例将某些值保存到SESSION时,它将失败.该行:
The code works fine, validate the credentials successfully but when I try to save some value to SESSION with the simplest example I found in documentation, it fails. The line:
$session = new Container();
正在触发此异常:
Session validation failed
我还能测试什么?任何关于我在做什么错的想法都将受到赞赏.
What else can I test? Any idea about what I'm doing wrong will be appreciated.
下面是完整的痕迹:
File:
/var/www/sismedical/Server/vendor/zendframework/zendframework/library/Zend/Session/SessionManager.php:111
Message:
Session validation failed
Stack trace:
#0 /var/www/sismedical/Server/vendor/zendframework/zendframework/library/Zend/Session/AbstractContainer.php(78): Zend\Session\SessionManager->start()
#1 /var/www/sismedical/Server/module/Security/src/Security/Controller/AuthController.php(100): Zend\Session\AbstractContainer->__construct()
#2 /var/www/sismedical/Server/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php(83): Security\Controller\AuthController->loginAction()
#3 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
#4 /var/www/sismedical/Server/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#5 /var/www/sismedical/Server/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#6 /var/www/sismedical/Server/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(117): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#7 /var/www/sismedical/Server/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php(114): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
#8 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
#9 /var/www/sismedical/Server/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#10 /var/www/sismedical/Server/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#11 /var/www/sismedical/Server/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(309): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
推荐答案
附加事件侦听器以侦听由所有类$sharedEvents->attach('*', '*', .. )
触发的所有事件将导致此错误消息.
Attaching an event listener to listen to all events triggered by all classes $sharedEvents->attach('*', '*', .. )
will cause this error message.
您必须非常小心将侦听器附加到什么上,因为某些侦听器期望特定的响应(在这种情况下为布尔值,指示会话是否有效).未设计为处理事件的侦听器(例如日志侦听器)通常不会返回响应,在这种情况下,该响应被视为验证失败.
You have to be really careful what you attach listeners to, since some listeners are expecting a specific response (in this case a boolean indicating if session is valid). A listener that wasn't designed to handled the event, such as a log listener, will typically not return a response, which in this case is seen as a validation failure.
这篇关于Zend \ Session \ Container会话验证失败异常-对象(关闭)ZF2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!