我需要在控制器中设置一个会话时间为5分钟的会话。我该怎么做? 我需要这样的东西:
$this->container->get('session')->set('mysession', 'value', 'expiration');
以symfony2的方式?
谢谢!
答案 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会话时“关闭”。您可以将此代码放在应用程序的后端,作为从不同方法调用以控制时间的函数。