<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.18.1</version>
</dependency>
package com.example.utils;
import com.alibaba.fastjson.JSON;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTCreationException;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.*;
public class JwtUtils {
/* key(按照签名算法的字节长度设置key) */
private final static String SECRET_KEY = "0123456789";
/* 过期时间(毫秒单位) */
private final static long TOKEN_EXPIRE_MILLIS = 1000 * 60 * 60;
/* 签名算法类型 */
private static Algorithm algorithmHS = Algorithm.HMAC512(SECRET_KEY);
/* 生成token */
private static String createToken(Map<String, ?> payload) throws JWTCreationException {
return JWT.create()
.withClaim("payload", payload)
.sign(algorithmHS);
}
/* 验证token */
private static Object verifyToken(String token) throws JWTVerificationException {
JWTVerifier verifier = JWT.require(algorithmHS)
.build();
DecodedJWT jwt = verifier.verify(token);
Map<String, Claim> claims = jwt.getClaims();
Claim claim = claims.get("payload");
return JSON.toJSON(claim.asMap());
}
public static void main(String[] args) {
Map<String, Object> payload = new HashMap<>();
payload.put("userId", 1002);
payload.put("userName", "张三");
payload.put("age", 27);
payload.put("address", "北京市");
String token = createToken(payload);
System.out.println("生成TOKE-----------------------------------------");
System.out.println(token);
System.out.println("验证-----------------------------------------");
System.out.println(verifyToken(token));
}
}