PHP Redis会话处理程序多用户

时间:2015-06-05 11:02:19

标签: php session laravel redis

假设我们有一个用户,他会像往常一样登录并浏览网站。然后我们可以说...这个用户的兄弟,他想从不同的IP或不同的浏览器登录同一个帐户。是否可以检查redis是否具有当前活动会话并拒绝访问,以防止同一用户的多重登录?

1 个答案:

答案 0 :(得分:0)

首先,您的问题与phpnode.js标签有什么关系?您试图在哪一个案例中实施?

其次,无论环境如何,存储在Redis中的内容取决于您决定在会话数据之外存储的内容。通常,会话数据会存储与之关联的随机sessioniduserid。尽管如此,在某些情况下,您可以选择将会话与尚未通过身份验证的用户相关联,从而存储没有任何与之关联的用户的会话。

阻止来自不同IP的并发用户访问更多地与身份验证机制有关,而不是会话逻辑。

防止来自不同IP地址的并发登录的一种方法是保存活跃用户的地图,例如<userid, ip>。然后,在检查凭据后,还要检查该映射以查看用户是否从其他IP地址处于活动状态。在这种情况下,您可以拒绝身份验证。

此解决方案还为不安全注销的用户提供了一些清理机制,这与会话清理(time_to_live)非常相似。要推进现有实现,您可以使用与前面所述相同的身份验证逻辑,在身份验证时将IP地址字段与用户ID一起添加到会话存储中。该会话现在看起来像<sessionid, userid, ip>。它只是一种捎带会话存储的方式,并利用它的清理过程。

相关问题