避免使用FOSUserBundle使用同一用户同时登录两个或多个用户



我试图避免两个或更多的登录同一用户在同一时间使用FOSUserBundle在Symfony 2.4,我不知道如何访问信息相关的认证用户和如何登出,如果最近登录的用户是以前的认证。我错过了什么?

[edit]

再次阅读你的问题,我不确定你想要什么。我在下面写的答案保持最新登录并注销旧登录 (/编辑)

已登录的用户拥有

a)在web服务器上启动会话

b)通过输入正确的用户名和密码组合来识别自己。

我们也知道一个登录的用户在会话中存储了一个变量(可能是user_id)。

现在,如果用户在另一个会话中登录,如果您想注销其他会话(具有相同user_id),您确实有一个问题,因为会话不与其他会话共享信息。

解决方案可能是在你的数据库'users'表中添加一个可以保存随机散列的列。然后,如果用户登录,您需要在数据库中保存一个新的哈希值,并且还需要将该哈希值保存到会话中。

然后,您必须将每个新请求的会话哈希值与数据库哈希值进行比较。如果两者不相同,用户仍在登录中,则必须将用户注销。

我认为你可以让这个工作与以下事件监听器(但我从来没有尝试过这样做):

  • security.interactive_login
  • kernel.request

相关内容

最新更新