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

在NestJS中使用Passport JWT遭遇Unauthorized 401(缺失凭证)问题

解决NestJS JWT认证返回401 Unauthorized问题

核心问题定位

你的jwt.strategy.ts中导入了错误的策略类:从passport-local导入了Strategy,但JWT身份认证需要使用passport-jwt包中的Strategy。这个错误会导致Passport无法正确解析请求中的JWT令牌,直接返回401状态码。

修复步骤

修改jwt.strategy.ts的导入语句,替换为正确的Strategy来源:

// 错误导入
// import { Strategy } from "passport-local";

// 正确导入
import { Strategy } from 'passport-jwt';

修复后的完整jwt.strategy.ts代码

import { Injectable } from "@nestjs/common";
import { PassportStrategy } from "@nestjs/passport";
import { ExtractJwt, Strategy } from "passport-jwt";

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {
    constructor() {
        super({
            jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
            ignoreExpiration: true,
            secretOrKey: 'a',
        });
    }

    async validate(payload: any) {
        return payload;
    }
}

额外验证建议

  1. 密钥一致性:确认JwtModule和JwtStrategy中使用的签名密钥完全一致,生产环境建议通过环境变量存储密钥,避免硬编码。
  2. 请求头格式:确保请求的Authorization头严格遵循Bearer <token>格式,无多余空格或拼写错误。
  3. 策略名称匹配:JwtAuthGuard中指定的策略名称'jwt'与PassportStrategy的第二个参数一致,这部分你的代码已经配置正确。

重启服务后,使用有效的JWT令牌请求/authCheck接口,即可正常通过认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:50:15