SpringBoot整合JWT(JSON Web Token)生成token与验证
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class JwtTokenUtil {
@Value("${jwt.secret}")
private String secret;
@Value("${jwt.expiration}")
private Long expiration;
// 生成Token
public String generateToken(UserDetails userDetails) {
return Jwts.builder()
.setSubject(userDetails.getUsername())
.setIssuedAt(new Date())
.setExpiration(new Date((new Date()).getTime() + expiration * 1000)) // 设置过期时间
.signWith(SignatureAlgorithm.HS512, secret) // 设置签名算法和密钥
.compact();
}
// 验证Token
public boolean validateToken(String token, UserDetails userDetails) {
String username = Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody()
.getSubject();
return userDetails.getUsername().equals(username) && !isTokenExpired(token);
}
// 判断Token是否过期
private boolean isTokenExpired(String token) {
Date expirationTime = Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody()
.getExpiration();
return expirationTime.before(new Date());
}
}
这段代码定义了一个JwtTokenUtil类,其中包含了生成Token和验证Token的方法。使用io.jsonwebtoken
库来创建和解析JWT。generateToken
方法使用用户详情来创建一个新的JWT,validateToken
方法用于验证Token是否有效,包括它是否过期以及它是否与正确的用户关联。
评论已关闭