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

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

WBOY
WBOYOriginal
2016-06-06 20:30:291272browse

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn