jwt生成Token与解析Token工具类
本文章是提供给初学者学习一个Token的知识
一、导入jwt依赖
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.18.2</version>
</dependency>
二、工具类
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Date;
public class JwtUtil {
private static final String SECRET_KEY = "your_secret_key_here";
public static String generateToken(String username, String password) {
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
// 设置过期时间,这里设置为2小时
long expMillis = nowMillis + 2 * 60 * 60 * 1000;
Date exp = new Date(expMillis);
// 构建JWT
return JWT.create()
.withSubject(username)//用于设置 JWT 的主题(subject),通常是一个标识符
.withClaim("username",username)
.withClaim("password",password)
.withIssuedAt(now)//这个方法用于设置 JWT 的签发时间
.withExpiresAt(exp)//这个方法用于设置 JWT 的过期时间
.sign(Algorithm.HMAC256(SECRET_KEY)); 使用 HMAC256 算法和密钥签名 JWT
}
// 解析 JWT 的方法
public static DecodedJWT parseToken(String token) throws Exception {
// 使用相同的密钥和算法来验证和解码 JWT
DecodedJWT jwt = JWT.require(Algorithm.HMAC256(SECRET_KEY))
.build()
.verify(token);
return jwt;
}
public static void main(String[] args) throws Exception {
String username="xy01";
String password="123456";
String token = generateToken(username,password);
System.out.println("Generated Token: " + token);
// 解析并打印claims
DecodedJWT jwt = parseToken(token);
String string = jwt.getClaim("username").asString();
String string1 = jwt.getClaim("password").asString();
System.out.println("Token解析username:"+string);
System.out.println("Token解析password:"+string1);
}
}