【发布时间】:2014-04-21 09:53:31
【问题描述】:
我正在使用以下代码使 symfony2 中的会话到期:
public function onKernelRequest(GetResponseEvent $event)
{
$this->maxIdleTime = ($this->container->getParameter('session_max_idle_time') > 0) ? $this->container->getParameter('session_max_idle_time') : 1200;
if (HttpKernelInterface::MASTER_REQUEST != $event->getRequestType()) {
return;
}
$usr= $this->getUser();
if (is_object($usr)) {
if ($this->maxIdleTime > 0) {
$this->session->start();
$lapse = time() - $this->session->getMetadataBag()->getLastUsed();
if ($lapse > $this->maxIdleTime) {
$this->securityContext->setToken(null);
$this->session->getFlashBag()->set('info', 'You have been logged out due to inactivity.');
}
}
}
}
它在特定时间后正确地使会话过期,但问题是,它不会立即使会话过期,而是在页面上向前移动一步,当我回击时,它会使会话过期。
我不明白是什么原因。请帮助为什么它在下一页移动,然后从那里结束会话并返回登录页面。
【问题讨论】:
-
将token设置为null后,有没有试过
$this->session->invalidate();?