Token 无效是什么原因?

调用 API 返回 "token 无效"、"invalid token"、401 Unauthorized 是开发中最常见的错误之一。Token 无效不是单一原因,排查时要分场景。

一、Token 无效的常见原因

  • Token 过期:JWT 有过期时间(exp),OAuth token 有有效期,过期后必须刷新。
  • Token 被撤销:用户登出、修改密码、管理员禁用,服务端把 token 加入黑名单。
  • 签名验证失败:JWT 签名密钥不匹配,或算法被篡改(如 alg=none 攻击)。
  • Scope/权限不足:token 有效但缺少所需权限,部分接口返回 403。
  • Token 格式错误:Bearer 前缀缺失、多余空格、换行符混入。
  • 时钟偏移:客户端与服务端时间差过大,JWT 的 nbf/iat 校验失败。
  • 多环境混淆:用测试环境 token 调生产接口,或不同租户 token 混用。
  • Token 被篡改:payload 被修改但签名未更新。

二、排查步骤

  1. 检查请求头:Authorization: Bearer <token>,注意空格和大小写。
  2. 解码 JWT(jwt.io)查看 exp、iat、iss、aud 是否正确。
  3. 确认服务端时间与本地时间同步(NTP)。
  4. 查看服务端日志,确认拒绝原因。
  5. 重新登录获取新 token,排除过期问题。

三、预防措施

  • token 即将过期时自动刷新(refresh token)。
  • 前端统一拦截 401,跳转登录。
  • 敏感操作要求重新认证。
  • 服务端记录 token 撤销日志,便于排查。