symfony 3.3中的单个会话实现

问题描述 投票:-2回答:1

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

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

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

谢谢。

php symfony session symfony-3.3
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.