Server MQTT客户端连接:错误:连接被拒绝:未授权

Server MQTT客户端连接:错误:连接被拒绝:未授权,server,redis,microservices,mqtt,nestjs,Server,Redis,Microservices,Mqtt,Nestjs,我有一个使用MQTT和Redis处理消息队列的项目。使用用户名和密码通过数据库进行身份验证 但是用户名、密码信息是完全正确的,但是当客户端连接到MQTT时,我得到了错误。此错误发生在临时服务器上,但在开发过程中不会发生 我花了三天时间试图找出原因,但没有找到原因 有人能帮我吗?我完全卡住了。下面是我的MQTT身份验证代码 @MessagePattern('mqtt-auth-81DPKQnMr7bd4Op63dDB/staging') async getNotificationsStaging(

我有一个使用MQTTRedis处理消息队列的项目。使用用户名和密码通过数据库进行身份验证

但是用户名、密码信息是完全正确的,但是当客户端连接到MQTT时,我得到了错误。此错误发生在临时服务器上,但在开发过程中不会发生

我花了三天时间试图找出原因,但没有找到原因

有人能帮我吗?我完全卡住了。下面是我的MQTT身份验证代码

@MessagePattern('mqtt-auth-81DPKQnMr7bd4Op63dDB/staging')
async getNotificationsStaging(@Payload() userInfo: RedisCheckUserDto, @Ctx() context: RedisContext) {
  const channelName = context.getChannel();
  if (!channelName.includes(process.env.GIT_BRANCH)) return false;
  return this.mqttAuth(userInfo);
  return true;
}


private async mqttAuth(userInfo: RedisCheckUserDto) {
  //Sunmi app
  if (userInfo.clientId.startsWith('sunmi')) {
    const outlet = await this.outletService.findOne(userInfo.username);
    console.log(!outlet)
    if (!outlet) return false;

    const isValidPassword = userInfo.password === outlet.outletPin;
    console.log(isValidPassword)
    return isValidPassword;
  }
  return false;
}
这是MQTT发送到后端以进行身份验证的代码:

 if (clientId.includes('staging'))
        return await this.client
          .send('mqtt-auth-81DPKQnMr7bd4Op63dDB/staging', {
            clientId,
            username,
            password: passwordString,
          })
          .toPromise();
此代码与MQTT连接:

const _mqttClient = mqtt.connect(process.env.NEXT_PUBLIC_MQTT_URL, {
      clientId: `sunmi-${process.env.NEXT_PUBLIC_ENV}-${randomId}-${outletId}`,
      username: codeName,
      password: outletPin,
    });
有人请帮帮我,我真的被卡住了