You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询全部JWT错误信息并处理相关异常?

JWT错误查询、完整错误列表及异常处理方案

一、获取完整JWT错误列表

不同JWT库的错误类型会有差异,以常用的Node.js jsonwebtoken 库为例,所有错误类均继承自JsonWebTokenError,常见内置错误类型及描述如下:

  • TokenExpiredError:令牌已过期,错误对象会附带expiredAt字段标记过期时间
  • JsonWebTokenError:无效令牌或签名错误(包含格式非法、签名不匹配、缺少必要claim等多种场景)
  • NotBeforeError:令牌尚未生效(对应JWT的nbf字段设置的时间晚于当前时间)
  • InvalidIssuerError:签发者(iss)与预期不匹配
  • InvalidAudienceError:受众(aud)与预期不匹配

若要获取某库的完整错误列表,直接查看库的源码或类型定义文件:

  • 比如jsonwebtoken库的错误定义在lib/errors.js文件中,可直接查看所有自定义错误类
  • TypeScript项目可查看@types/jsonwebtoken包中的类型定义,获取所有错误名称的枚举

二、查询JWT错误的方法

  1. 捕获错误并识别类型:在令牌验证逻辑中捕获异常,通过error.name字段判断具体错误类型,同时可打印error.message获取详细描述
  2. 查看库的错误文档:多数成熟JWT库会在官方文档中列出所有可能的错误类型及触发场景
  3. 调试时打印完整错误对象:除name和message外,部分错误会附带额外属性(如TokenExpiredError的expiredAt),打印完整对象可获取更多信息

三、JWT异常处理实践

以Node.js jsonwebtoken 库为例,通过try-catch包裹验证逻辑,根据错误类型分支处理:

const jwt = require('jsonwebtoken');

function validateJwtToken(token) {
  try {
    // 验证令牌并解码
    const decodedPayload = jwt.verify(token, process.env.JWT_SECRET);
    return { status: 'success', payload: decodedPayload };
  } catch (err) {
    // 根据错误类型返回对应提示或执行逻辑
    switch (err.name) {
      case 'TokenExpiredError':
        return { 
          status: 'error', 
          message: '登录已过期,请重新登录',
          expiredTime: err.expiredAt
        };
      case 'JsonWebTokenError':
        return { status: 'error', message: '无效令牌,请检查请求' };
      case 'NotBeforeError':
        return { status: 'error', message: '令牌尚未生效,请稍后尝试' };
      case 'InvalidIssuerError':
        return { status: 'error', message: '令牌签发者非法' };
      case 'InvalidAudienceError':
        return { status: 'error', message: '令牌受众不匹配' };
      default:
        return { status: 'error', message: '令牌验证失败:' + err.message };
    }
  }
}

注意事项

  • 不同JWT库的错误名称可能略有差异,需对应查看所用库的文档或源码
  • 生产环境中避免返回过于详细的错误信息(如具体签名不匹配),防止泄露敏感信息,仅返回用户友好提示

内容的提问来源于stack exchange,提问作者G Chandra Sekhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:13:16