0

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

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

以 symfony2 的方式?

谢谢!

4

3 回答 3

4

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

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

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

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

于 2012-05-16T09:08:45.477 回答
3

此功能是最近添加的。您可以更新到此提交或补丁。从代码看来,您可以通过以下方式设置到期时间,

$this->container->get('session')->getMetadataBag()->stampNew(300);
于 2012-04-26T13:28:34.513 回答
1

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

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

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

于 2012-12-11T11:43:20.453 回答