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

目前做的都是可以同时在线,改了密码之后不同设备登录的没有下线,如何保证改密码以后所有的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就会失效

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值