1.引入依赖
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.1</version>
</dependency>
2.生成JWT
private static String createJwt(Integer id,String username){
// HashMap<String, Object> map = new HashMap<>();
//
// Calendar instance = Calendar.getInstance();
// // 20秒后令牌token失效
// instance.add(Calendar.SECOND,20);
String token = JWT.create()
.withClaim("id", id)
.withClaim("username", username)
.withExpiresAt(new Date(System.currentTimeMillis()+3600000))
.sign(Algorithm.HMAC256(SING));
return token;
}
3.解析JWT令牌
private static DecodedJWT parseJwt(String token){
return JWT.require(Algorithm.HMAC256(SING)).build().verify(token);
}
4.获取参数
System.out.println(verify.getClaim("userId"));
System.out.println(verify.getClaim("username"));
异常
- SignatureVerificationException 签名不一致异常
- TokenExpiredException 令牌过期异常
- AlgorirhmMismatchExceotion 算法不匹配异常
- InvalidClaimException 失效的payload异常