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 被修改但签名未更新。
二、排查步骤
- 检查请求头:Authorization: Bearer <token>,注意空格和大小写。
- 解码 JWT(jwt.io)查看 exp、iat、iss、aud 是否正确。
- 确认服务端时间与本地时间同步(NTP)。
- 查看服务端日志,确认拒绝原因。
- 重新登录获取新 token,排除过期问题。
三、预防措施
- token 即将过期时自动刷新(refresh token)。
- 前端统一拦截 401,跳转登录。
- 敏感操作要求重新认证。
- 服务端记录 token 撤销日志,便于排查。