共计 1889 个字符,预计需要花费 5 分钟才能阅读完成。
导入依赖
dependency>
groupId>io.jsonwebtokengroupId>
artifactId>jjwtartifactId>
version>0.12.3version>
dependency>
包括了下面三个依赖, 所以导入上面一个就 OK 了
dependency>
groupId>io.jsonwebtokengroupId>
artifactId>jjwt-apiartifactId>
version>0.12.3version>
dependency>
dependency>
groupId>io.jsonwebtokengroupId>
artifactId>jjwt-implartifactId>
version>0.12.3version>
scope>runtimescope>
dependency>
dependency>
groupId>io.jsonwebtokengroupId>
artifactId>jjwt-jacksonartifactId>
version>0.12.3version>
scope>runtimescope>
dependency>
之前很多方法都弃用了, 好多博文也还是用的废弃的方法
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.security.SecureDigestAlgorithm;
import javax.crypto.SecretKey;
import java.sql.Timestamp;
import java.time.Instant;
import java.util.Date;
import java.util.UUID;
public class TokenUtil {
public static final int ACCESS_EXPIRE = 60;
private final static SecureDigestAlgorithmSecretKey, SecretKey> ALGORITHM = Jwts.SIG.HS256;
private final static String SECRET = "secretKey";
public static final SecretKey KEY = Keys.hmacShaKeyFor(SECRET.getBytes());
private final static String JWT_ISS = "Tiam";
private final static String SUBJECT = "Peripherals";
public static String genAccessToken(String username) {
String uuid = UUID.randomUUID().toString();
Date exprireDate = Date.from(Instant.now().plusSeconds(ACCESS_EXPIRE));
return Jwts.builder()
.header()
.add("typ", "JWT")
.add("alg", "HS256")
.and()
.claim("username", username)
.id(uuid)
.expiration(exprireDate)
.issuedAt(new Date())
.subject(SUBJECT)
.issuer(JWT_ISS)
.signWith(KEY, ALGORITHM)
.compact();
}
public static JwsClaims> parseClaim(String token) {
return Jwts.parser()
.verifyWith(KEY)
.build()
.parseSignedClaims(token);
}
public static JwsHeader parseHeader(String token) {
return parseClaim(token).getHeader();
}
public static Claims parsePayload(String token) {
return parseClaim(token).getPayload();
}
}
参考:
- https://github.com/jwtk/jjwt
- https://jwt.io/
- https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.4
原文地址: 2023-10 最新 jsonwebtoken-jjwt 0.12.3 基本使用
正文完