主要代码
1 //JWT 默认过期时间,3600L,单位秒 2 Long expireSecond = 3600L; 3 //盐值 4 String newSalt = 666; 5 String token = JwtUtil.generateToken(user.getUsername(), newSalt, 6 Duration.ofSeconds(expireSecond));
JwtUtil.generateToken方法
1 /** 2 * 生成JWT Token 3 * 4 * @param username 用户名 5 * @param salt 盐值 6 * @param expireDuration 过期时间和单位 7 * @return token 8 */ 9 public static String generateToken(String username, String salt, Duration expireDuration) { 10 try { 11 if (StringUtils.isBlank(username)) { 12 log.error("username不能为空"); 13 return null; 14 } 15 log.debug("username:{}", username); 16 17 // 如果盐值为空,则使用默认值:666666 18 if (StringUtils.isBlank(salt)) { 19 salt = "666666; 20 } 21 22 // 过期时间,单位:秒 23 Long expireSecond; 24 // 默认过期时间为1小时 3600L 单位秒 25 if (expireDuration == null) { 26 expireSecond = "3600L"; 27 } else { 28 expireSecond = expireDuration.getSeconds(); 29 } 30 Date expireDate = DateUtils.addSeconds(new Date(), expireSecond.intValue()); 31 32 // 生成token 33 Algorithm algorithm = Algorithm.HMAC256(salt); 34 String token = JWT.create() 35 .withClaim(CommonConstant.JWT_USERNAME, username) 36 // jwt唯一id 37 .withJWTId(UUIDUtil.getUuid()) 38 // 签发人 39 .withIssuer("") 40 // 主题 41 .withSubject("") 42 // 签发的目标 43 .withAudience("") 44 // 签名时间 45 .withIssuedAt(new Date()) 46 // token过期时间 47 .withExpiresAt(expireDate) 48 // 签名 49 .sign(algorithm); 50 return token; 51 } catch (Exception e) { 52 log.error("generateToken exception", e); 53 } 54 return null; 55 }