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

JWT鉴权时出现JsonWebTokenError: jwt malformed错误如何解决?

JWT 报错 "jwt malformed" 排查方案

jwt malformed 报错的核心原因是服务端拿到的待校验字符串不符合JWT标准的三段式结构(由两个.分隔的Base64URL格式字符串组成),按优先级从高到低排查即可定位问题:

  • 优先排查:token变量取值错误
    你的signIn方法返回的是{ token: 实际token值 }的对象,若测试代码中调用登录接口后直接将返回的整个对象赋值给token变量,拼接在Authorization头里的内容就会变成Bearer [object Object],完全不符合JWT格式,这是该场景下最高发的错误。
    修复方案:调用登录接口后正确提取token字段,示例:

    // 错误写法
    const token = await authService.signIn(authParams)
    // 正确写法
    const { token } = await authService.signIn(authParams)
    
  • 检查Authorization头格式
    确认'Bearer ' + token中Bearer后面的空格是正常半角空格,没有多打、少打或使用全角空格。同时检查你console.warn(token)打印出的token值,确认前后没有多余的空格、换行符、引号等冗余字符,且结构符合两段.分隔的三段式结构。

  • 检查JWT生成与校验配置一致性
    确认jwtService.sign时使用的加密配置(密钥、加密算法等)和校验阶段的配置完全一致,没有拼写错误或配置不一致的问题。如果使用框架封装的JWT能力(如NestJS的JwtModule),确认全局注册的配置和校验策略读取的配置是同一份。

  • 检查服务端token提取逻辑
    你目前只提供了校验payload的validate方法,没有提供JWT策略中从请求头提取token的逻辑,需要确认提取逻辑是正确切割Authorization头取Bearer后的内容,没有误将Bearer前缀一起带入校验逻辑,也没有切割错误丢失了token的部分字符。标准提取逻辑示例:

    const authHeader = req.headers.authorization
    const token = authHeader?.split(' ')?.[1]
    

内容的提问来源于stack exchange,提问作者A Mehmeto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:36:01