【问题标题】:Single session implmentation in symfony 3.3symfony 3.3 中的单会话实现
【发布时间】:2018-08-05 20:52:00
【问题描述】:

我目前正在寻找一种在 symfony 3.3 中实现单个会话的方法,我想要的是,如果我从一个浏览器登录,然后从同一用户的另一个浏览器登录,我想从第一次注销会话。

一种不简单的方法是将最新的会话 ID 存储在用户实体中,然后在每次请求时查询该 ID,如果会话 ID 不同且较旧,则用户将被重定向到注销路由。

我想知道是否有人知道实现这一点的更简单方法,这可能不在 symfony 文档中。

谢谢。

【问题讨论】:

    标签: php symfony session symfony-3.3


    【解决方案1】:

    我通过使用 redis 缓存解决了这个问题,我将用户 ID 保存为键,将会话 ID 保存为键中的数据。然后在每次请求时,我都会在 redis 中搜索当前用户是否有密钥。如果没有,那么我为该用户创建了一个密钥,并将会话 ID 作为数据。如果是,那么我检查密钥中的会话 ID 是否与当前会话 ID 相同。如果相同,则我只是正常继续,否则我从会话处理程序中删除旧会话并将新会话放入密钥中。

    我还使用 redis 作为会话处理程序,所以我只是在旧会话 id 上调用了destroy。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多