JWT 登录问题里,最常见的一类就是时间字段。用户刚登录就过期、刷新后失效、测试环境和线上时间不一致,很多都和 expiatnbf 有关。

你可以用 JWT exp / iat 时间检查器 快速查看这些字段对应的时间。

常见时间字段#

JWT Payload 里常见:

  • iat:签发时间。
  • exp:过期时间。
  • nbf:在此之前不可用。

这些字段通常是 Unix 秒级时间戳,不是毫秒。

秒和毫秒不要混#

秒级:

text已剪下 ✓
1783411200

毫秒级:

text已剪下 ✓
1783411200000

如果后端要求秒,你传毫秒,过期时间可能跑到很远未来;如果要求毫秒,你传秒,token 可能立刻过期。

也可以用 时间戳转换工具 对照检查。

登录失效排查#

建议按这个顺序:

  1. 解码 JWT。
  2. 查看 exp 是否已经过期。
  3. 查看 iat 是否异常。
  4. 确认服务器时间是否准确。
  5. 检查刷新 token 逻辑。
  6. 检查前端是否缓存旧 token。

如果签名校验失败,就不是时间字段本身的问题,需要检查密钥和算法。

不要只信前端判断#

前端可以解码 JWT 做倒计时或提示,但真正鉴权必须由后端验证签名和过期时间。

前端时间可能被用户修改,不能作为安全依据。

刷新 Token 要单独设计#

短有效期 access token 通常会配合 refresh token。access token 过期后,前端用 refresh token 换新 token,而不是让用户频繁重新登录。

排查时要区分:是 access token 的 exp 过期,还是 refresh token 失效,或者刷新接口本身失败。三者表现都可能是“登录掉了”,但修复方向不同。

总结#

JWT 时间字段排查的重点是秒/毫秒、服务器时间和刷新逻辑。expiatnbf 都应该按接口约定处理。

遇到 token 过期问题时,可以用 JWT exp / iat 时间检查器 和 JWT 解码工具一起看,先确认时间是否合理。