long now = System.currentTimeMillis(); long jwtExpiredTime = payLoadFromJwt.getExpiredTime().getTime(); long reNewTime = Long.parseLong(BusinessConstant.JWT_RENEW_TIME.getKey()) * 60 * 1000; //判断是否需要续期 if (jwtExpiredTime - now <= reNewTime) { //获取旧的用户属性 UserVo user = payLoadFromJwt.getPayLoadData(); //过期时间 int expiredTime = Integer.parseInt(BusinessConstant.JWT_EXPIRED_TIME.getKey()); String jwtTokenWithExpireTimeMinutes = JwtUtils.createJwtTokenWithExpireTimeMinutes(user, rsaProperties.getPrivateKey(), expiredTime, BusinessConstant.SYSTEM_JWT_PAYLOAD_KEY.getKey(), BusinessConstant.SYSTEM_JWT_ISS.getKey()); redisUtils.setNewAndDeleteOldWithExpiredTime(BusinessConstant.JWT_REDIS_KEY.getKey() + jwtTokenWithExpireTimeMinutes, user.getName() + ":" + user.getUserId(),BusinessConstant.JWT_REDIS_KEY.getKey() +authorizationToken, expiredTime, TimeUnit.MINUTES); response.setHeader(BusinessConstant.JWT_REQUEST_HEAD.getKey(), jwtTokenWithExpireTimeMinutes); log.info("====客户端:" + ipAddr + " 用户:" + user.getName() + " -- (" + user.getUserId() + ") token续期成功!!!!"); }
时间: 2024-02-15 10:27:31 浏览: 70
System.currentTimeMillis()计算方式与时间的单位转换详解
5星 · 资源好评率100%
这段代码的作用是判断 JWT 是否需要续期,并在需要续期时生成一个新的 JWT Token,并添加到响应的 Header 中。具体来说,它首先获取当前时间戳 now 和 JWT Token 的过期时间戳 jwtExpiredTime,然后判断它们的时间差是否小于等于一个预设的续期时间 reNewTime。如果需要续期,它会从旧的 JWT Token 中获取用户属性,然后使用这些属性、私钥、过期时间等参数生成一个新的 JWT Token jwtTokenWithExpireTimeMinutes,并将其保存到 Redis 中。最后,它将新的 JWT Token 添加到响应的 Header 中,并打印一条日志。
阅读全文