同事因为同时登陆一个账号 token多次刷新
因此我调了一会,顺便学习
最终解决为:
/**
* 多个用户同时登陆 不刷新token
*/
String aheadTokenOfThisUser = redisTemplate.boundValueOps(user.getId()).get();
if(StringUtil.isNotEmpty(aheadTokenOfThisUser)){
return aheadTokenOfThisUser;
}
//使用uuid作为源token
String token = Jwts.builder().setId(user.getId()).
setSubject(user.getId()).setIssuedAt(new Date()).
signWith(SignatureAlgorithm.HS256, JwtConstants.JWT_SECRET).compact();
//存储到redis并设置过期时间
redisTemplate.boundValueOps(user.getId()).set(token,
JwtConstants.TOKEN_EXPIRES_HOUR, TimeUnit.HOURS);
return token;
加了一个取值;如果当前id能取到,那么就不新生成token
这个也是没有其他办法的办法
本来心思用redis容器来存一对多的值
结果没有找到合适的方法来set,等深入学习redis容器之后再来补充