JWT(JSON Web Token)是现代 Web 应用中最常用的身份认证方案,前后端分离项目几乎离不开它。但开发和调试过程中,你一定遇到过 Token 校验失败、过期时间不对、Payload 字段丢失等问题——此时如果能快速解码 JWT、看清里面的数据,排查效率会大幅提升。本文将教你如何使用 jsjson.com 的在线工具箱,通过 Base64 解码 + JSON 格式化 + 时间戳转换 三步组合,秒级完成 JWT Token 的解析与调试。
📋 JWT Token 结构简介:为什么需要在线解码
JWT Token 由三段用 . 分隔的 Base64URL 编码字符串组成:
eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjEyMzQ1LCJleHAiOjE3MDAwMDAwMDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
- Header(头部):声明算法类型,如
{"alg":"HS256","typ":"JWT"} - Payload(载荷):包含用户信息和声明,如
{"userId":12345,"exp":1700000000} - Signature(签名):用于验证 Token 完整性的加密签名
在日常开发中,你需要解码 JWT 的常见场景包括:
- 接口调试:后端返回 401,需要确认 Token 是否过期或 Payload 字段是否正确
- 权限排查:用户反馈无法访问某个页面,需要检查 JWT 中的角色和权限字段
- 跨服务联调:微服务之间传递 Token,需要验证 Payload 中的 claim 数据
- 前端开发:需要从 localStorage 中的 Token 提取用户 ID 或过期时间
手动解码 JWT 既繁琐又容易出错。借助 jsjson.com 提供的在线工具,你只需三步就能完成完整的 Token 解析。
🔧 三步在线解码 JWT Token
第一步:Base64 解码提取 Header 和 Payload
JWT 的前两段分别是 Header 和 Payload,它们都是 Base64URL 编码的 JSON 字符串。
- 打开 jsjson.com 的 Base64 在线解码工具
- 将 JWT Token 按
.拆分为三段 - 复制第一段(Header)粘贴到输入框,点击「解码」
- 得到类似
{"alg":"HS256","typ":"JWT"}的 JSON 字符串 - 再复制第二段(Payload)进行解码
💡 提示:标准 JWT 使用 Base64URL 编码(用
-和_替代+和/,且无=填充)。大多数 Base64 工具也能正常解码 Base64URL 内容,如果遇到解码异常,可尝试将-替换为+,_替换为/,末尾根据长度补=。
第二步:JSON 格式化查看结构
解码后的 Payload 通常是一个紧凑的 JSON 字符串,字段多了很难一眼看清。这时就需要 jsjson.com 的 JSON 格式化工具:
- 复制解码得到的 JSON 字符串
- 粘贴到 JSON 格式化工具 的输入框
- 点击「格式化」,立刻得到缩进清晰的 JSON
格式化后的 Payload 示例:
{
"userId": 12345,
"username": "zhangsan",
"role": "admin",
"permissions": ["read", "write", "delete"],
"iat": 1699900000,
"exp": 1700000000
}
这样你就能快速定位每个字段的值,确认用户身份信息是否正确。
第三步:时间戳转换判断 Token 过期时间
JWT Payload 中通常包含三个时间相关的字段:
- iat(issued at):Token 签发时间
- exp(expiration):Token 过期时间
- nbf(not before):Token 生效时间
这些字段的值都是 Unix 时间戳格式(秒级整数),直接看数字根本不知道是哪一天。使用 jsjson.com 的时间戳转换工具 即可秒转为可读时间:
- 复制 Payload 中
exp字段的值(例如1700000000) - 打开 时间戳转换工具
- 将时间戳粘贴到输入框,点击「转换」
- 得到对应的北京时间,如
2023-11-14 23:33:20
💡 排查技巧:如果当前时间已超过
exp对应的时间,说明 Token 已过期,这就是接口返回 401 的常见原因。同理检查nbf字段,确认 Token 是否已到生效时间。
💡 JWT Token 调试实用技巧
技巧一:快速对比两个 Token 的 Payload 差异
在 Token 刷新前后,你可能需要对比新旧 Token 的 Payload 是否一致。操作步骤:
- 分别解码两个 Token 的 Payload 并格式化
- 使用 jsjson.com 的在线文本对比工具 粘贴两段 JSON
- 工具会高亮差异字段,一眼看出哪些 claim 发生了变化
技巧二:用正则校验 JWT Token 格式
拿到一个 Token 字符串,先用 正则表达式在线测试工具 检查格式是否合法:
^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$
这个正则匹配标准 JWT 的三段式结构,帮助你在接收 Token 时快速做格式校验,避免后续解码报错。
技巧三:检查 JWT 中的嵌套 JSON 字段
有些 JWT 的 Payload 中包含嵌套的 JSON 对象,例如 {"data":{"profile":{"name":"张三"}}}。解码后建议使用 JSON 格式化工具 来正确缩进和显示嵌套层级,方便阅读和排查。
技巧四:批量解析多个 Token
在微服务架构中,一个请求可能经过多个服务,每个服务都签发自己的 Token。你可以依次对每个 Token 执行 Base64 解码 → JSON 格式化 → 时间戳转换的流程,快速梳理整个调用链路的身份信息。
技巧五:确认 Base64URL 与 Base64 的区别
JWT 标准使用的是 Base64URL 编码,与标准 Base64 的区别在于:
| 特征 | Base64 | Base64URL |
|---|---|---|
替代 + |
+ |
- |
替代 / |
/ |
_ |
| 填充符 | = |
可省略 |
如果 Base64 解码工具 无法正确解码,尝试手动替换字符。大部分场景下直接粘贴解码即可正常工作。
❓ 常见问题 FAQ
JWT Token 在哪里能看到?
JWT Token 通常出现在以下位置:
- 浏览器 Cookie 中的
Authorization或自定义字段 - 浏览器 localStorage / sessionStorage
- HTTP 请求头
Authorization: Bearer <token> - 后端日志中的请求参数
拿到 Token 字符串后,用 Base64 解码工具 就能解析其内容。
JWT 的 Signature 部分能在线解码吗?
Signature 是对 Header 和 Payload 的加密签名(HMAC 或 RSA),不是简单的 Base64 编码,无法直接解码为可读内容。但你可以验证签名是否正确——使用 jsjson.com 的 SHA256 工具 或 RSA 工具,根据算法类型对 header.payload 部分进行签名计算,与 Token 中的 Signature 对比。
Token 还没到期就返回 401 是什么原因?
除了过期时间外,还有几种常见原因:
- 签发服务器和校验服务器的密钥不一致
- Payload 中的
iss(签发者)或aud(受众)字段不匹配 - Token 在黑名单中(已登出或被撤销)
- 时钟偏差:服务器时间不一致导致
exp校验失败
使用 时间戳转换工具 对比服务器时间和 Token 中的 iat、exp 字段,排查时钟偏差问题。
Base64URL 解码报错怎么办?
JWT 使用 Base64URL 编码,如果解码工具报错,可尝试:
- 将
-替换为+,_替换为/ - 根据字符串长度,末尾补 1-2 个
=(长度模 4 余 2 补 2 个=,余 3 补 1 个) - 使用 jsjson.com 的 Base64 工具 重新解码
前端开发中如何自动解析页面中的 JWT?
在浏览器控制台可以快速解析:
const token = 'eyJhbGciOiJIUzI1NiJ9...';
const payload = JSON.parse(atob(token.split('.')[1]));
console.log(payload);
console.log('过期时间:', new Date(payload.exp * 1000).toLocaleString());
将输出的 JSON 粘贴到 JSON 格式化工具 中进一步整理查看。
🔗 相关工具推荐
在 JWT Token 调试过程中,以下 jsjson.com 工具组合使用效果最佳:
- Base64 在线编解码 — 解码 JWT 的 Header 和 Payload
- JSON 格式化工具 — 美化解码后的 JSON 数据
- 时间戳转换工具 — 将
exp、iat、nbf转为可读时间 - SHA256 在线计算 — 验证 HMAC 签名
- RSA 在线加密工具 — 处理 RS256 算法的 JWT 签名验证
- 正则表达式在线测试 — 校验 JWT Token 格式
- 文本对比工具 — 对比新旧 Token Payload 差异
所有工具免费在线使用,无需注册,数据在浏览器本地处理不上传服务器,保护你的 Token 安全。