JWT Token 过期是怎么回事?
JWT(JSON Web Token)由三部分组成:Header.Payload.Signature。Payload 中有一个 exp 字段(Expiration Time),声明了 Token 的过期时间点(Unix 时间戳)。
当 exp 指定的时间到达后,服务端会认为这个 Token 失效,用户需要重新登录或刷新 Token。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4ifQ.
KOUU5IU4M2GG5JH6z1z3h-q8h6D5I7Z2K8x1A3j9XkY
# 解码后 Payload 部分:
{
"sub": "1234567890",
"name": "John",
"exp": 1735689600 ← 这里就是过期时间戳(2025-01-01 00:00:00)
}
如何查看 JWT 是否已过期?
方法一:在线解码工具(最简单)
不需要安装任何东西,直接把 Token 粘贴进去即可看到 exp 对应的日期时间和当前状态:
- 推荐使用 JWT 解码工具,一键解析 Header、Payload、Signature,并标注是否已过期
方法二:命令行快速查看
如果手边有终端,可以用 Python 一行命令解码:
# Python 解码 JWT(无需验证签名,直接解析 payload)
python3 -c "
import json, base64, sys
token = '你的JWT'
payload = token.split('.')[1] + '=='
decoded = json.loads(base64.urlsafe_b64decode(payload))
print('过期时间:', decoded.get('exp'))
print('签发时间:', decoded.get('iat'))
print('是否过期:', decoded['exp'] < __import__('time').time())
"
方法三:手动查看 exp 时间戳
找到 Token 的 exp 字段值,用时间戳转换工具换算成可读日期:
- Unix 时间戳转换工具 — 输入时间戳,查看对应的具体时间
JWT 过期后怎么处理?
场景一:Token 过期,但后端支持刷新
很多 API 会提供 /refresh 接口,用过期 Token 换新 Token:
POST /api/refresh
Content-Type: application/json
{
"refresh_token": "eyJhbGciOiJIUzI1NiIs..."
}
# 响应:
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"expires_in": 3600
}
场景二:Token 过期且不支持刷新
只能重新登录,获取新的 Token 对。
POST /api/login
Content-Type: application/json
{
"username": "admin",
"password": "xxx"
}
# 响应:
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"refresh_token": "eyJhbGciOiJIUzI1NiIs...",
"expires_in": 7200
}
延长 Token 有效期的方法
如果 Token 过期太快影响体验,可以:
- 在服务端调整
exp时长(如从 1 小时延长到 7 天) - 配合 Refresh Token 机制,Access Token 用短效,Refresh Token 用长效
- 使用 JWT 生成工具 自定义过期时间
常见错误:Token 时间不一致
调试时经常遇到 Token 明明没到 exp 时间却报过期,很可能是服务器时区不一致或客户端本地时间偏差导致的。建议:
# 检查服务器时间是否准确
date
# 确认时间戳与 UTC 的偏差
timedatectl
常见问题
Q: jwttoken过期怎么查看 的原理是什么?
A: 这类问题的答案由底层算法决定,有明确的技术标准。与其死记硬背结论,不如理解原理,这样遇到变体问题也能推理出正确答案。
A: 这类问题的答案由底层算法决定,有明确的技术标准。与其死记硬背结论,不如理解原理,这样遇到变体问题也能推理出正确答案。
Q: jwttoken过期怎么查看 在实际项目中如何应用?
A: 根据具体场景来用。理论问题理解即可,实际项目中关注的是如何正确使用工具处理你的业务数据。
A: 根据具体场景来用。理论问题理解即可,实际项目中关注的是如何正确使用工具处理你的业务数据。
Q: 我需要担心这个问题吗?
A: 在工程实践中,这类问题的风险是可控的。理解原理、正确使用工具、不做过度设计即可。
A: 在工程实践中,这类问题的风险是可控的。理解原理、正确使用工具、不做过度设计即可。