我正在用Symfony 4.2构建一个Web应用程序。 我目前正在尝试将用户的注销日期存储在数据库中,以显示自上次注销以来的新内容。 当用户有意单击注销时,我已经这样做了,但是当会话期满时,我不知道如何实现同样的目的。我尝试在Symfony的官方文档中查找会话过期事件。我能找到的最接近的是以下文档:
https://symfony.com/doc/current/components/http_foundation/session_configuration.html
但是我不知道是否可以提供帮助。 当用户会话在Symfony 4中过期时,是否可以执行功能?
答案 0 :(得分:0)
会话本质上是一个包含会话ID的cookie。很明显,它存储在浏览器中,因此后端除了能够获取/设置Cookie之外,无法控制它。换句话说,当会话cookie可能在客户端上消失时,后端无法捕获所有可能的情况。例如,客户端可能拒绝存储cookie或手动清除它。
当然,如果您认为可以将每个会话都视为“处于活动状态的会话,直到其生命周期将从后端的角度来看一直结束,则可以接受”-有一种非常简单的方法可以实现您的目标:
kernel.response
事件,并检查是否将会话cookie设置为直接采用其过期时间。 如果您将这个过期时间存储到用户的帐户记录中-您将获得有关会话过期的确切信息。此信息的使用可能会因您的需要而异。