我需要在控制器中设置一个过期时间为 5 分钟的会话。我该怎么做?我需要类似的东西:
$this->container->get('session')->set('mysession', 'value', 'expiration');
以 symfony2 的方式?
谢谢!
我需要在控制器中设置一个过期时间为 5 分钟的会话。我该怎么做?我需要类似的东西:
$this->container->get('session')->set('mysession', 'value', 'expiration');
以 symfony2 的方式?
谢谢!
假设您的会话已经创建,您可以通过以下方式实现您的目标:
$this->container->get('session')->migrate($destroy = false, $lifetime = null);
$destroy
:是否删除旧会话或将其留给垃圾回收。
$lifetime
:设置会话 cookie 的 cookie 生命周期。空值将保持系统设置不变,0 将 cookie 设置为随着浏览器会话过期。时间以秒为单位,不是 Unix 时间戳。
此功能是最近添加的。您可以更新到此提交或补丁。从代码看来,您可以通过以下方式设置到期时间,
$this->container->get('session')->getMetadataBag()->stampNew(300);
要控制活动会话的时间(以及空闲时间),您必须以这种方式在控制器中执行此操作(摘自:官方文档中的会话配置):
$session->start();
if (time() - $session->getMetadataBag()->getCreated() > $maxTime) {
$session->invalidate();
throw new SessionExpired(); // redirect to expired session page
}
当时间到达您的 $maxTime 会话时“关闭”。您可以将此代码作为函数放在应用程序的后端,以从不同的方法调用来控制时间。