Symfony会话生存期



我正在进行我的第一个真正的Symfony(6.1(项目,目前正在按照官方指南实施用户身份验证:https://symfony.com/doc/current/security.html#access-控制授权

到目前为止,我基本上已经设置好了。用户可以登录和注销。但我注意到PHP会话似乎永远存在(除非您明确注销(。当我在Chrome中检查会话cookie时,它的过期日期设置为0,这意味着浏览器会话结束。但是,当我关闭浏览器并重新加载页面时,我仍然能够成功进行身份验证。

我通过将framework.yaml中的属性cookie生存期设置为特定值来解决这个问题。

session:
handler_id: null
cookie_secure: auto
cookie_samesite: lax
storage_factory_id: session.storage.factory.native
cookie-lifetime: 120

但这是正确的做法吗?会话是否在后端继续?难道我不需要在后端设置一个生命周期来确保没有人会摆弄饼干吗?

很抱歉,如果这些问题是无稽之谈,我还在学习。感谢您提供先进的信息!

如果定义cookie生存期>0垃圾回收将使用它来清除未使用的会话服务器端。

当会话打开时,PHP将根据到session.gc_probability/session.gc_divisor设置的概率。例如,如果这些值分别设置为5/100,则意味着概率为5%。同样,3/4意味着四分之三的机会即75%。

会话cookie的问题是,服务器端我们不知道客户端何时结束会话。在这种情况下,当垃圾收集开始时,将使用gc_maxlifetime的值

最新更新