多浏览器密码修改,账户Token全部失效解决方案

问题场景:

用户在多个浏览器登录同一个账户时,正常情况下每个浏览器获得token应该是不同的。但若是其中一个浏览器进行了修改密码的操作,就应该删除该账户关联的所有token。该功能如何实现呢?

在这里提供一个解决方案,这是我自己的看法,如果有其他方法或者有问题欢迎各位大佬在评论区指点出来。
根据问题,可以得出token和用户必须关联,但同时每个token又需要区分开来。这里可以使用redis存储token。 使用redis的string类型存储,key指定userId + token, value就指定token即可。这样就解决了token和用户即关联又能区分出来的问题。
如:
    String key = "token:" + user.getId() + ":" + token;

上面只解决了token的存储,如何删除所有关联的token还没有解决。这里提供如下方法:

先通过keys方法获取该用户关联所有的key ,这里的`*`很重要。
再通过delet方法删除所有key。
    //根据通配符`*`获取该用户所有的key
    Set<String> keys = stringRedisTemplate.keys("token:" + user.getId() + ":*");
    assert keys != null;
    //删除redis对应token
    stringRedisTemplate.delete(keys);

登录校验就按正常的redis+token登录校验流程即可。

最后最后!!!各位看官觉得有用就收藏、点赞、评论一下吧。我看到问题后,我会第一时间回复的!  

最近更新

  1. TCP协议是安全的吗?

    2024-01-01 11:30:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-01 11:30:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-01 11:30:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-01 11:30:02       18 阅读

热门阅读

  1. spingboot整合Swagger教程

    2024-01-01 11:30:02       40 阅读
  2. c++11--常量表达式

    2024-01-01 11:30:02       34 阅读
  3. 关键字:final最终的

    2024-01-01 11:30:02       37 阅读
  4. go切片截取细节分析

    2024-01-01 11:30:02       32 阅读
  5. 人机对话--关于意识机器

    2024-01-01 11:30:02       33 阅读
  6. 《微信小程序开发从入门到实战》学习六十八

    2024-01-01 11:30:02       37 阅读
  7. React16源码: Component与PureComponent源码实现

    2024-01-01 11:30:02       31 阅读
  8. Vue Router的介绍与引入

    2024-01-01 11:30:02       43 阅读
  9. 机器视觉系统选型-选型示例分享

    2024-01-01 11:30:02       39 阅读
  10. 2023年终总结及计划

    2024-01-01 11:30:02       34 阅读