Symfony 2:如何在登录时设置会话生存期



我有一个用于Symfony 2应用程序的自定义登录表单。在这个表单中,我有一个包含多个选项的选项字段,用于设置登录会话的最大空闲时间。我希望能够在登录操作时设置会话生存期。不幸的是,登录信息存储在FOSUserBundle中,由于该捆绑包的未来更新,无法修改该捆绑包。

这是我到目前为止发现的,如果我错了,请纠正我:
首先,symfony中的生命周期可以在一段时间后被破坏,如本文所述。

其次,我必须能够捕捉/拦截登录操作/验证,以在parameter.yml.中设置参数

然后,可以在侦听器中使用该参数来检查是否没有超过maxlifetime。

所以我的问题分为另外两个问题:

  1. 如何捕获/拦截登录操作/验证
  2. 有没有一种方法可以创建一个监听器,在什么都不发生的时候检查空闲时间(或者可以检查下一个请求)

我猜,

  1. 您需要一个登录成功处理程序。阅读以下内容,了解

    Symfony2登录和安全

  2. 您还可以为控制器/内核请求事件编写EventListener,在那里您可以比较用户的空闲时间。

    http://symfony.com/doc/current/cookbook/service_container/event_listener.html#request-事件检查类型

据我所知,为这种需求添加参数值不是一个好主意。

如果您需要销毁用户会话,为什么不在身份验证成功处理程序中设置登录时间(可以在会话或用户实体上次登录时保存),在控制器侦听器中,您可以比较登录的长度并重置用户会话?

最新更新