Spring Boot 3.0 JWT 安全实现指南
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Component;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
@Component
public class JwtTokenProvider {
@Value("${app.jwtSecret}")
private String jwtSecret;
@Value("${app.jwtExpirationInMs}")
private long jwtExpirationInMs;
public String generateToken(Authentication authentication) {
String username = authentication.getName();
long now = System.currentTimeMillis();
Date expiryDate = new Date(now + jwtExpirationInMs);
return Jwts.builder()
.setHeaderParam("typ", "JWT")
.setSubject(username)
.setIssuedAt(new Date(now))
.setExpiration(expiryDate)
.signWith(SignatureAlgorithm.HS512, jwtSecret)
.compact();
}
public boolean validateToken(String token, Authentication authentication) {
String username = authentication.getName();
String secret = jwtSecret;
try {
Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
return true;
} catch (Exception e) {
return false;
}
}
}
这个代码示例展示了如何在Spring Boot 3.0应用程序中生成和验证JWT。JwtTokenProvider
类使用了io.jsonwebtoken
库来创建和验证JWT。generateToken
方法使用提供的认证信息生成一个新的JWT,而validateToken
方法则检查提供的JWT是否有效。在实际使用中,你需要将jwtSecret
和jwtExpirationInMs
配置从属性文件中读取出来,并在需要时注入到JwtTokenProvider
类中。
评论已关闭