多浏览器密码修改,账户Token全部失效解决方案
2023-12-30 17:33:05
问题场景:
用户在多个浏览器登录同一个账户时,正常情况下每个浏览器获得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登录校验流程即可。
最后最后!!!各位看官觉得有用就收藏、点赞、评论一下吧。我看到问题后,我会第一时间回复的!??
文章来源:https://blog.csdn.net/weixin_58403235/article/details/135306955
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!