我使用了EMQX 5.8.4开源版部署到本地了,现在我在使用用户名+密码 http认证是遇到了问题。
我想要的结果是在认证失败的时候返回一个错误信息,比如”用户名密码错误“,或是”用户已被停用“这样的消息。或者是认证成功时返回一个JWTToken。我服务端和客户端都是使用的C#开发,客户端使用的MQTTnet库4.3.7.1207版本var options = new MqttClientOptionsBuilder()
.WithTcpServer(ServerIP, ServerPort)
.WithClientId(ClientId)
.WithCredentials(ClientName, ClientPwd) // 如果需要
.WithProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V500)
.Build();使用了MQTT5协议版本。服务端代码如下 public IActionResult Authenticate(EmqxAuthRequest request)
{
if (request?.Username == null)
{
return BadRequest(new { result = "deny", reason = "missing_username" });
}
if (!_users.TryGetValue(request.Username, out var user))
{
return Ok(new { result = "deny", reason = "user_not_found" });
}
if (user.IsLocked)
{
return Ok(new { result = "deny", reason = "account_locked" });
}
if (user.Password != request.Password)
{
return Ok(new { result = "deny", reason = "invalid_password" });
}
return Ok(new { result = "allow" });
}