symfony 3.3 中的单会话实现

Single session implmentation in symfony 3.3

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

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

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

谢谢。

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

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