要使JWT token失效,可以使用以下方法之一:

  1. 在JWT token中包含过期时间(expiration time),这样可以在验证JWT token时检查过期时间是否已过。在创建JWT token时,可以设置过期时间,例如:
Date expirationDate = new Date(System.currentTimeMillis() + EXPIRATION_TIME);
String token = Jwts.builder()
                .setSubject(subject)
                .setExpiration(expirationDate)
                .signWith(SignatureAlgorithm.HS512, secretKey)
                .compact();

在验证JWT token时,可以检查过期时间是否已过:

JwtParser parser = Jwts.parser().setSigningKey(secretKey);
Claims claims = parser.parseClaimsJws(token).getBody();
Date expirationDate = claims.getExpiration();
Date now = new Date();
if (now.after(expirationDate)) {
    // token已过期
}
  1. 在服务端保存JWT token的黑名单,当需要使JWT token失效时,将JWT token加入黑名单中。在验证JWT token时,先检查JWT token是否在黑名单中。

例如,可以使用Redis等缓存工具保存JWT token的黑名单:

// 将JWT token加入黑名单中
redisTemplate.opsForSet().add("jwt:token:blacklist", token);

// 验证JWT token时,检查JWT token是否在黑名单中
if (redisTemplate.opsForSet().isMember("jwt:token:blacklist", token)) {
    // token已失效
}

注意:使用第二种方法使JWT token失效时,需要确保所有服务端都能访问同一个黑名单。如果使用多个服务端,可以使用分布式缓存工具,例如Redis Cluster等

如何让String token = JwtTokenUtilsgetTokenStringvalueOfusergetIdusergetPassword;的token有效期设为失效

原文地址: https://www.cveoy.top/t/topic/eNTe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录