Maison  >  Article  >  développement back-end  >  redis - php如何保证同一用户最多在一个session中保持登录?

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

WBOY
WBOYoriginal
2016-06-06 20:30:291272parcourir

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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn