1. JJWT入门:五分钟搞定你的第一个JWT令牌
第一次接触JJWT时,我被它简洁的API设计惊艳到了。作为Java开发者,我们经常需要处理用户认证问题,而JJWT让生成和验证JWT变得像搭积木一样简单。先来看个最基础的例子:
java复制// 生成密钥
SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
// 构建JWT
String token = Jwts.builder()
.setSubject("user123") // 设置用户标识
.setIssuedAt(new Date()) // 签发时间
.signWith(key) // 签名
.compact();
这段代码生成的token包含三部分:头部(Header)、载荷(Payload)和签名(Signature),用点号分隔。比如你可能得到这样的字符串:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMTIzIiwiaWF0IjoxNjUwMjM4MDIyfQ.s5D5zX2H2J7ZVlCx7jJ7kZxY5X5ZxY5X5ZxY5X5ZxY5X5
密钥生成是第一个需要注意的点。上面的Keys.secretKeyFor()会帮我们生成足够安全的密钥,但实际项目中更常见的做法是从配置读取密钥字符串:
java复制String secretStr = "mySuperSecretKey123!@#";
SecretKey key = Keys.hmacShaKeyFor(secretStr.getBytes(StandardCharsets.UTF_8));
验证令牌同样简单:
java复制Claims claims = Jwts.parserBuilder()
.setSigningKey(key)
.build()
.parseClaimsJws(token)
.getBody();
System.out.println("用户ID: " + claims.getSubject());
这里容易踩的坑是忘记处理异常。JWT验证可能抛出多种
