如何延长Symfony中的会话cookie生存期?

gsk*_*ema 5 php cookies session symfony

在服务器端访问会话数据时,将对其modified_time进行设置,从而将其到期时间延长到将来。

但是,PHPSESSIDcookie 不会发生这种情况。虽然服务器端的会话数据有效期已延长,但cookie有效期未延长。如果cookie过期,则用户将丢失其会话-发送请求时,他将没有会话ID。

有什么办法可以Symfony\Component\HttpFoundation\Session\Session延长Cookie的有效期吗?

  • 可以为相同的会话ID完成此操作吗?还是我们必须重新生成它(对于许多用户X许多请求似乎效率低下)?
  • 我应该自己手动设置它(不考虑OOP原则)

我已经找到$request->getSession()->getMetadataBag() 并尝试设置stampNew(),但这似乎与PHPSESSIDcookie 无关。

Mat*_*teo 1

您可以在会话密钥下的 config.yml 文件中进行更改,例如:

# session configuration
session:
    cookie_lifetime:    3600
Run Code Online (Sandbox Code Playgroud)

来自文档:

cookie_lifetime

类型:整数 默认值:null

这决定了会话的生命周期 - 以秒为单位。默认值 - null - 意味着将使用 php.ini 中的 session.cookie_lifetime 值。将此值设置为 0 表示 cookie 在浏览器会话期间有效。

此处文档中的更多信息

  • 我知道这个设置,我需要知道的是如何在每次页面访问时“增加”cookie 过期时间,因为服务器上会话数据的过期时间在每次请求时都会“增加”。此外,只要继续访问该网站,您的会话就应该在定义的生命周期内保持活动状态,即使在您关闭浏览器(然后重新打开)之后也是如此。只有当您在“一生”秒内没有访问过该网站时,它才会消失。 (11认同)