SpringBoot项目集成【用户身份认证】实战 【实战核心篇】基于JWT生成和校验Token
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class JwtTokenUtil {
private static final String SECRET_KEY = "your_secret_key"; // 应该是一个复杂的密钥
public static String generateToken(UserDetails userDetails) {
long now = (new Date()).getTime();
return Jwts.builder()
.setIssuedAt(new Date())
.setSubject(userDetails.getUsername())
.setExpiration(new Date((now + 60 * 60 * 1000))) // Token有效期1小时
.signWith(SignatureAlgorithm.HS512, SECRET_KEY)
.compact();
}
public static boolean validateToken(String token, UserDetails userDetails) {
String username = Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(token)
.getBody()
.getSubject();
return username.equals(userDetails.getUsername()) && !isTokenExpired(token);
}
private static boolean isTokenExpired(String token) {
Date expiration = Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(token)
.getBody()
.getExpiration();
return expiration.before(new Date());
}
}
这个代码示例提供了一个简单的JWT工具类,用于生成和验证用户的JWT。在生成Token时,它设置了签发时间、用户名和Token过期时间。在验证Token时,它检查过期和用户名是否匹配。这个例子使用了io.jsonwebtoken
库来创建和解析JWT。
评论已关闭