JWT 修改代码避免使用已弃用方法
最近在折腾 Spring Security 6 和 JWT 0.12.5。发现网上很多教程都已经很旧了,用到的很多接口都已经打上弃用标记了。于是看了下 JWT 的代码,简单地迁移一下,测试了下能用就先放上来记录了。
原代码:
private String generateToken(Map<String, Object> extraClaims, UserDetails userDetails) {
return Jwts.builder().setClaims(extraClaims).setSubject(userDetails.getUsername())
.setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 24))
.signWith(getSigningKey(), SignatureAlgorithm.HS256).compact();
}
private Claims extractAllClaims(String token) {
return Jwts.parser().setSigningKey(getSigningKey()).build().parseClaimsJws(token)
.getBody();
}
private Key getSigningKey() {
byte[] keyBytes = Decoders.BASE64.decode(jwtSigningKey);
return Keys.hmacShaKeyFor(keyBytes);
}
修改后
private String generateToken(Map<String, Object> extraClaims, UserDetails userDetails) {
return Jwts.builder().claims(extraClaims).subject(userDetails.getUsername())
.issuedAt(new Date(System.currentTimeMillis()))
.expiration(new Date(System.currentTimeMillis() + 1000 * 60 * 24))
.signWith(getSigningKey()).compact();
}
private Claims extractAllClaims(String token) {
return Jwts.parser().verifyWith(getSigningKey()).build().parseSignedClaims(token)
.getPayload();
}
private SecretKey getSigningKey() {
byte[] keyBytes = Decoders.BASE64.decode(jwtSigningKey);
return Keys.hmacShaKeyFor(keyBytes);
}
看看其他吧