如何在控制器中设置会话的到期时间?

时间:2012-04-26 09:40:29

标签: session symfony session-timeout

我需要在控制器中设置一个会话时间为5分钟的会话。我该怎么做? 我需要这样的东西:

$this->container->get('session')->set('mysession', 'value', 'expiration');

以symfony2的方式?

谢谢!

3 个答案:

答案 0 :(得分:4)

假设您的会话已经创建,您可以通过以下方式实现目标:

$this->container->get('session')->migrate($destroy = false, $lifetime = null);

$destroy:是删除旧会话还是将其留给垃圾回收。

$lifetime:设置会话cookie的cookie生存期。空值将使系统设置保持不变,0将cookie设置为使用浏览器会话到期。时间以秒为单位,不是Unix时间戳。

答案 1 :(得分:3)

此功能已添加recently。您可以更新到此提交或修补程序。从代码中可以看出,您可以通过以下方式设置到期时间,

$this->container->get('session')->getMetadataBag()->stampNew(300);

答案 2 :(得分:1)

要控制活动会话的时间(以及空闲时间),您必须以这种方式在控制器中执行此操作(摘自:官方文档中的session configuration):

$session->start();
if (time() - $session->getMetadataBag()->getCreated() > $maxTime) {
  $session->invalidate();
  throw new SessionExpired(); // redirect to expired session page
}

当时间到达你的$ maxTime会话时“关闭”。您可以将此代码放在应用程序的后端,作为从不同方法调用以控制时间的函数。