<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class TokenUtil {
//密钥
private static final String TOKEN_SECRET = "5R5roUcuAu3o5C3o";
//30分钟超时
private static final long TIME_OUT = 30 * 60 * 1000;
//加密
public static String sign(Long uid) {
try {
Date expiration_time = new Date(System.currentTimeMillis() + TIME_OUT);
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
Map<String, Object> headerMap = new HashMap<>(2);
headerMap.put("type", "JWT");
headerMap.put("alg", "HS256");
return JWT.create().withHeader(headerMap).withClaim("uid", uid).withExpiresAt(expiration_time).sign(algorithm);
} catch (Exception e) {
return null;
}
}
//解密
public static DecodedJWT verify(String token) {
try {
JWTVerifier verifier = JWT.require(Algorithm.HMAC256(TOKEN_SECRET)).build();
DecodedJWT jwt = verifier.verify(token);
return jwt;
} catch (Exception e) {
//解码异常
return null;
}
}
public static void main(String[] args) {
String token = sign(170L);
System.out.println("token::" + token);
DecodedJWT jwt = verify(token);
if (jwt != null) {
//UID
System.out.println("uid::" + jwt.getClaim("uid").asLong());
//TIMEOUT
System.out.println("timeout::" + jwt.getExpiresAt());
//ALG
System.out.println("alg::" + jwt.getAlgorithm());
//TOKEN
System.out.println("token::" + jwt.getToken());
//HEADER
System.out.println("header::" + jwt.getHeader());
//PAYLOAD
System.out.println("payload::" + jwt.getPayload());
//SIGNATURE
System.out.println("signature::" + jwt.getSignature());
} else {
System.out.println("Decoded JWT Failure");
}
}
}