PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

redis - php如何保证同一用户最多在一个session中保持登录?

原创
2016-06-06 20:30:29 957浏览

目前做的都是可以同时在线,改了密码之后不同设备登录的没有下线,如何保证改密码以后所有的session全部清空掉?以及有登录状态的就不能再登录或者前一个下线。像QQ这样说怎么实现的?

回复内容:

目前做的都是可以同时在线,改了密码之后不同设备登录的没有下线,如何保证改密码以后所有的session全部清空掉?以及有登录状态的就不能再登录或者前一个下线。像QQ这样说怎么实现的?

qq 就是及时通讯.

如果是 php, 建议给登陆一个 token , 每次登陆这个 token 都会变. 这样旧的 session 里存的 token 就过期不存在了, 你就让另外一个登陆状态退出就行了.

大概就像楼上朋友说得那样。在redis中建个hash,key是用户id,value是token,更改密码后,更新这个value

补充下 他们提供的思路中少了一个心跳机制 每个客户端都要把当前的token发送给服务端 对比 过期的全部踢除

Redis里,用户的ID作为键,用户的密码哈希作为值.
这个密码哈希根据后端关系数据库用户计算出来,放到Redis缓存.
用户修改密码时,更新Redis的密码哈希.
这样cookie认证时,比对密码哈希,不一致自然cookie就是失效了.

login成功的时候,把sessionID存到数据库或者其它缓存,sessionId最多存在一个

判断用户是否登陆,依据就是这个sessionId

这样的话,产生第二次登陆,前一次登陆的session就会失效

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。