SpringBoot项目集成【用户身份认证】实战 【实战核心篇】基于JWT生成和校验Token
    		       		warning:
    		            这篇文章距离上次修改已过428天,其中的内容可能已经有所变动。
    		        
        		                
                
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。
评论已关闭