Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nestjs:验证函数不与jwt一起工作_Node.js_Typescript_Jwt_Nestjs - Fatal编程技术网

Node.js Nestjs:验证函数不与jwt一起工作

Node.js Nestjs:验证函数不与jwt一起工作,node.js,typescript,jwt,nestjs,Node.js,Typescript,Jwt,Nestjs,我正在尝试在nest following中使用jwt 一切正常,但验证函数在jwt.strategy.ts中不起作用 这是我的jwt.strategy.ts: 从'@nestjs/common'导入{Injectable,UnauthorizedException}; 从'@nestjs/passport'导入{PassportStrategy}; 从“passport jwt”导入{ExtractJwt,Strategy}; 从“/auth.service”导入{AuthService}; 从

我正在尝试在nest following中使用jwt

一切正常,但验证函数在jwt.strategy.ts中不起作用

这是我的jwt.strategy.ts:

从'@nestjs/common'导入{Injectable,UnauthorizedException};
从'@nestjs/passport'导入{PassportStrategy};
从“passport jwt”导入{ExtractJwt,Strategy};
从“/auth.service”导入{AuthService};
从“./interfaces/jwt payload.interface”导入{JwtPayload};
@可注射()
导出类JwtStrategy扩展了PassportStrategy(策略){
构造函数(专用只读authService:authService){
超级({
jwtFromRequest:ExtractJwt.fromAuthHeaderWithScheme('JWT'),
分泌键:“分泌键”,
});
}
异步验证(有效负载:JwtPayload){
控制台日志(有效负载)
//const user=wait this.authService.validateUser(有效载荷);
//如果(!用户){
//抛出新的UnauthorizedException();
// }
//返回用户;
}
}
auth.module.ts:


从'@nestjs/common'导入{Module};
从'@nestjs/jwt'导入{JwtModule};
从'@nestjs/passport'导入{PassportModule};
从“/auth.service”导入{AuthService};
从“/jwt.strategy”导入{JwtStrategy};
@模块({
进口:[
PassportModule.register({defaultStrategy:'jwt'}),
JwtModule.register({
secretroprivateKey:“secretKey”,
标志选项:{
expiresIn:3600,
},
}),
],
提供者:[AuthService,JwtStrategy],
})
导出类AuthModule{}
app.module.ts:

从'@nestjs/common'导入{Module};
从“./app.controller”导入{AppController};
从“/app.service”导入{AppService};
从'@nestjs/typeorm'导入{TypeOrmModule};
从“./user/user.module”导入{UserModule};
从'@nestjs/graphql'导入{GraphQLModule};
从“./auth/auth.module”导入{AuthModule};
@模块({
进口:[
TypeOrmModule.forRoot(),
GraphQLModule.forRoot({
类型路径:['./***/*.graphql'],
}),
AuthModule,
用户模块,
],
控制器:[AppController],
提供者:[AppService],
})
导出类AppModule{}
当我在postman中请求时,我没有任何日志,它似乎没有进入此验证功能:


很抱歉,我的英语不好,这是我第一次使用stackoverflow,感谢您的帮助

只有在验证了令牌的加密(在您的情况下,
secretKey
)并且令牌未过期时,才会调用您的
JwtStrategy
验证
方法。只有在检查了这两件事之后,才会使用有效负载调用
validate
。使用它,您可以检查用户是否仍然存在。因此,这三个步骤是:

  • 令牌已用您的密钥签名
  • 令牌未过期
  • 自定义有效负载验证

  • 您可以使用手动检查步骤1和步骤2中的令牌。

    谢谢,我找到了原因,在这里“ExtractJwt.fromAuthHeaderWithScheme('jwt')”,“jwt”是小写,但“jwt”是标头授权中的大写字母,这是一个愚蠢的错误。是的,总是一些愚蠢的小事情需要几个小时才能解决。很高兴它现在起作用了。:)欢迎来到stackoverflow!:)