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