账号安全
JWT 过期刷新机制:401 自救
对接第三方平台 API 的时候,最常遇到的就是 401。前端明明带着 token 请求,后端就是不给过,多半是 JWT 过期了。JWT 不像 session 那样存在服务器,过期时间写在 token 自己身上,调接口前不检查就很容易撞上。
我自己踩过坑:写爬数据的小工具,token 有效期两小时,脚本跑一半突然全报 401。后来把 token 解码看一眼 exp 字段,才发现是过期时间到了,根本没有刷新逻辑。
现在遇到这种问题,我会先拿 JWT 解码(本地)把 token 拆开看。payload 里的 exp、iat 一目了然,还能核对签名算法和 issuer,判断到底是过期还是 token 本身拼错了。
排查完再决定怎么修。短 token 配 refresh token 是标准做法,刷新接口拿新 token,客户端本地存好续期;如果是自己签发给下游的,就把过期时间放宽,或者加个自动续签的中间层。
有一点要注意,JWT 里的内容默认只是 base64 编码,不是加密,敏感信息别往里面塞。解码工具在本地跑,token 不出浏览器,排查完直接删掉记录,比粘到在线解析站安全得多。