0

我有一个 JWT 策略,其验证功能类似于

async validate(payload: JwtPayload): Promise<LeanedUser> {
    console.log(payload);
    return this.authService.getUserFromTokenAndValidate(payload.uid);
}
// payload is not getting logged on the console

登录后,我得到一个由 JWT 服务签名的访问令牌并尝试获取用户配置文件

curl --location --request GET 'http://localhost:3000/v1/users/profile' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkaXNwbGF5Ijp7Im5hbWUiOnsiZmlyc3QiOiJBbWl0IiwibGFzdCI6IlNpbmdoIn0sImVtYWlsIjoidXNlckBleGFtcGxlLmNvbSIsInJvbGUiOjB9LCJ1aWQiOiI2MTZlYjc1MDRmMzg2MjAxY2E4NTIwOGMiLCJpYXQiOjE2MzQ2NDU4NDAsImV4cCI6MTYzNDczMjI0MH0.mq3NLR1erddT9hSMb-38smyoOPR3tkPcGsu7bRIoDSQ' -s | jq
{
  "statusCode": 401,
  "message": "Unauthorized"
}

JWT模块配置如下

JwtModule.registerAsync({
  inject: [ConfigService],
  useFactory: (configService: ConfigService) => ({
    secret: configService.get<string>('JWT_SECRET'),
    signOptions: { expiresIn: '10d' },
  }),
}),

我所做的以下我认为可能会破坏 JWT

  1. 将 JWT 机密从“hello_world”更改为随机字符串
  2. 将 expiresIn 更改为“10d”

请注意,我还尝试恢复上述更改并尝试登录。它正在根据新配置返回访问令牌,但仍然是相同的 401 Unauthorized 问题

4

0 回答 0