我需要在控制器中设置过期时间为5分钟的会话。我该怎么做? 我需要像这样:如何在控制器中设置到会话的到期时间?
$this->container->get('session')->set('mysession', 'value', 'expiration');
in symfony2 way?
谢谢!
我需要在控制器中设置过期时间为5分钟的会话。我该怎么做? 我需要像这样:如何在控制器中设置到会话的到期时间?
$this->container->get('session')->set('mysession', 'value', 'expiration');
in symfony2 way?
谢谢!
此功能被添加recently。您可以更新到此提交或修补程序。从代码,似乎你可以通过以下方式设置过期时间,
$this->container->get('session')->getMetadataBag()->stampNew(300);
假设你的会话已经创建,您可以用achive你的目标:
$this->container->get('session')->migrate($destroy = false, $lifetime = null);
$destroy
:是否删除旧的会话或者将其留给垃圾收集。
$lifetime
:设置会话cookie的cookie的生命期。空值将使系统设置保持不变,0将Cookie设置为在浏览器会话中过期。时间以秒为单位,并且不是Unix时间戳。
要控制活动会话的时间(和空闲时间太长),你必须这样做,在控制器这种方式(自提:session configuration在官方文档):
$session->start();
if (time() - $session->getMetadataBag()->getCreated() > $maxTime) {
$session->invalidate();
throw new SessionExpired(); // redirect to expired session page
}
当时间到达你$ maxTime会话是“关闭”的。您可以将此代码作为一个函数从您的应用程序的后端放入,以调用不同的方法来控制时间。