问题场景:
用户在多个浏览器登录同一个账户时,正常情况下每个浏览器获得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登录校验流程即可。