为了账号安全,请及时绑定邮箱和手机立即绑定

关于一个人获得多个token的问题

关于一个人获得多个token的问题

莫回无 2019-05-20 17:50:42
A在B电脑上登录后获得一个token,然后A又在C电脑上登录获得一个token,现在A就有两个token了,这样有什么办法让之前的token失效?否则两台电脑都可以登录,主流办法是怎么解决这个问题的?
查看完整描述

2 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

如果只有纯粹的jwt的话,做不到覆盖token的功能。想要覆盖token,需要结合session来达到,session可以用redis甚至直接就sql数据库去做。。。
                            
查看完整回答
反对 回复 2019-05-20
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

一般普遍的token存储办法就是在缓存中存储,比如redis,好的,根据你的业务需求,其实也算是最简单的需求了:
token='xxxxx';
//假设拿到了user编号
userId=3;
redis.set(token,userId);
我们设置了这个token对应的用户,这是最基本的。现在需要拿到用户上一次的token,那其实没啥含量,反向设置一次即可
token='xxxxx';
//假设拿到了user编号
userId=3;
redis.set(token,userId);
//找到旧的token并删除
oldToken=redis.get('token_map_'+userId);
if(oldToken){
redis.delete(oldToken);
}
//覆盖旧的token
redis.set('token_map_'+userId,token);
还有一个方案,就是其实不需要主动删原来的token:
token='xxxxx';
//假设拿到了user编号
userId=3;
redis.set(token,userId);
redis.set('current_token'+userId,token);
然后访问接口的时候,第一步判断token是否在redis,第二步判断token与current_token对应的token是否一致,一致就通过。这样可以巧妙的抛弃原先的token。
不是复杂的账号系统,所以不需要过度设计
                            
查看完整回答
反对 回复 2019-05-20
  • 2 回答
  • 0 关注
  • 298 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信