【发布时间】:2017-07-23 17:56:27
【问题描述】:
在服务器端访问会话数据时,其modified_time 被设置,因此将其过期时间延长到未来。
但是,PHPSESSID cookie 不会发生这种情况。虽然服务器端的会话数据过期时间延长了,但 cookie 过期时间没有延长。如果 cookie 过期,用户将失去他的会话 - 他在发送请求时将没有会话 ID。
有没有办法告诉Symfony\Component\HttpFoundation\Session\Session 延长cookie 的有效期?
- 可以对相同的会话 ID 执行此操作吗?还是我们必须重新生成它(对于许多用户 X 许多请求来说似乎效率低下)?
- 我是否应该自己手动设置(忽略 OOP 原则)
我找到了$request->getSession()->getMetadataBag()
并尝试设置stampNew(),但这似乎与PHPSESSID cookie 没有交互。
【问题讨论】:
-
我认为 PHPSESSID cookie 被设置为会话 cookie,这意味着浏览器在关闭时会清理它。从来没有听说过在浏览器会话完成之前清理它。
-
我不需要删除它,我需要延长它的有效期。它不会在关闭浏览器时被清除 - cookie 的寿命会更长(我猜有点像 REMEMBERME)
-
我的意思是(基于the manual,会话的默认持续时间是“只要浏览器打开”)。现在,如果浏览器不清理会话 cookie 并将它们保留更长时间(通常是这种情况),则不是基于默认的 PHP 配置。无论如何,PHP 会话并不意味着在浏览器会话之后持续存在,也许您可以使用不同的会话管理器和您自己的自定义 sessionid cookie 来使会话持续更长时间。
标签: php session cookies symfony