- 导入依赖
implementation 'io.jsonwebtoken:jjwt:0.9.1'
- 生成Token
static String generate(final String username, final String secret) {
Instant instant = Instant.now();
return Jwts.builder()
.claim("username", username)
.setIssuedAt(Date.from(instant))
.setExpiration(Date.from(instant.plus(1, ChronoUnit.HOURS)))
.signWith(SignatureAlgorithm.HS256, secret)
.compact();
}
- 解析Token,解析时容易发生的三个错误:签名错误,token过期和格式错误
ExpiredJwtException\SignatureException\MalformedJwtException
static Claims resolveToken(final String token, final String secret) {
return Jwts.parser().setSigningKey(secret)
.setClock(() -> Date.from(Instant.now()))
.parseClaimsJws(token).getBody();
}