叁拾玖2026-07-01 01:00

Spring Boot 集成 JWT 认证全流程

1317 31

为什么选 JWT

传统的 Session 方案在前后端分离架构下会遇到跨域与分布式共享问题,而 JWT 把用户信息签名后放进令牌本身,服务端无需存储会话,天然适合RESTful API。

整体流程

  1. 用户提交账号密码
  2. 服务端校验通过后签发 access_token / refresh_token
  3. 客户端后续请求携带 Authorization: Bearer <token>
  4. 网关或拦截器统一校验签名与过期时间

核心代码

public String createToken(Account account) {
    return Jwts.builder()
        .setSubject(account.getUsername())
        .claim("role", account.getRole())
        .setIssuedAt(new Date())
        .setExpiration(new Date(System.currentTimeMillis() + EXPIRE))
        .signWith(secretKey, SignatureAlgorithm.HS256)
        .compact();
}

几个实践建议

  • access_token 有效期控制在 2 小时内,配合 refresh_token 静默续期
  • 登出场景使用 Redis 黑名单兜底
  • 密钥务必走环境变量,不要硬编码

小结

JWT 不是银弹,但在中小型项目中它足够简单可靠。把签发、校验、续期三个环节封装成 starter,后续项目直接复用即可。

全文完