nest.js 开发踩坑记录

一、jwt: invalid signature

表现

Java API服务生成的token,Nest.js API 服务 @nestjs/jwt 包使用相同的secret,无其他额外配置,却无法通过校验。

原因

通过 JWT官网 调试,发现是因为Java服务用于生成jwt的的secret不是标准 base64 字符。

解决

断点调试,发现非标准base64的secret在Java服务jwt包里会被自动转化为buffer,而@nestjs/jwt 不会自动转化,需要手动执行 Buffer.from() 将secret转化为buffer。

this.jwtService.verify(token, {
	secret: Buffer.from(secret, 'base64'),
})

注:业务场景中出现过secret转为buffer格式后依然无法通过校验的情况,原因未知。所以最根本的解决方法还是使用标准base64作为secret。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值