用户会话过期时,Symfony 4中是否存在事件?

时间:2019-02-16 16:25:08

标签: symfony session

我正在用Symfony 4.2构建一个Web应用程序。 我目前正在尝试将用户的注销日期存储在数据库中,以显示自上次注销以来的新内容。 当用户有意单击注销时,我已经这样做了,但是当会话期满时,我不知道如何实现同样的目的。我尝试在Symfony的官方文档中查找会话过期事件。我能找到的最接近的是以下文档:

https://symfony.com/doc/current/components/http_foundation/session_configuration.html

但是我不知道是否可以提供帮助。 当用户会话在Symfony 4中过期时,是否可以执行功能?

1 个答案:

答案 0 :(得分:0)

会话本质上是一个包含会话ID的cookie。很明显,它存储在浏览器中,因此后端除了能够获取/设置Cookie之外,无法控制它。换句话说,当会话cookie可能在客户端上消失时,后端无法捕获所有可能的情况。例如,客户端可能拒绝存储cookie或手动清除它。

当然,如果您认为可以将每个会话都视为“处于活动状态的会话,直到其生命周期将从后端的角度来看一直结束,则可以接受”-有一种非常简单的方法可以实现您的目标:

  1. 会话配置中有session cookie lifetime个参数,用于计算会话的过期时间,您可以将其用于计算会话的过期时间
  2. 或者,您可以侦听kernel.response事件,并检查是否将会话cookie设置为直接采用其过期时间。

如果您将这个过期时间存储到用户的帐户记录中-您将获得有关会话过期的确切信息。此信息的使用可能会因您的需要而异。