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

时间:2013-12-11 09:40:40

标签: php session symfony login session-timeout

我有一个Symfony 2应用程序的自定义登录表单。在这种形式中,我有一个选项字段,有多个选项来设置登录会话的最大空闲时间。我希望能够在登录操作中设置会话生存期。遗憾的是,loginaction存储在FOSUserBundle中,因为无法修改捆绑包的未来更新。

这是我到目前为止所发现的,如果我错了,请纠正我:
首先,symfony的生命周期可以在一段时间后销毁,如here所述 其次,我必须能够捕获/拦截登录操作/验证以在parameter.yml中设置参数 然后可以在监听器中使用该参数来检查是否未超过maxlifetime
所以我的问题又分为两个问题:

  1. 如何捕获/拦截登录操作/验证?
  2. 有没有办法创建一个侦听器,在没有任何反应的情况下检查空闲时间(或者可以检查下一个请求)?
  3. 提前致谢

1 个答案:

答案 0 :(得分:2)

我猜,

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

    Symfony2 Login and Security

  2. 您还可以为Controller / Kernel Request Events编写EventListener,您可以在其中比较用户的空闲时间。

    http://symfony.com/doc/current/cookbook/service_container/event_listener.html#request-events-checking-types

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

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