密码不同,我可以看到已发布的消息?

时间:2014-11-17 15:02:09

标签: mqtt messagebroker paho android-open-accessory

在下面的代码段中,我为订阅声明了usernamepassqord

private final String userName = "user_1";
private final char[] password = "pass".toCharArray();
....
....
final MqttAndroidClient client_1 = new MqttAndroidClient(getApplicationContext(), serverURI,   
clientID, persistenceDataDir, Ack.AUTO_ACK);
MqttConnectOptions opts = new MqttConnectOptions();
opts.setCleanSession(false);
opts.setWill(WILL_TOPIC, WILL_MSG.getBytes(), QoS, false);
opts.setKeepAliveInterval(keepAliveInterval);
opts.setUserName(userName);
opts.setPassword(password);

我从应用程序开始连接clean session = falseclient ID = 1没有passwoed和用户名提供,我继续发布(从Pc到代理)我已订阅的主题的值(来自应用给经纪人。

稍后在subscribe消息中,我在连接选项中设置了密码和用户名,并且未指定publish消息的用户名和密码,并重新运行p。发生了什么,我收到了我所参与的主题的更新公布值。

之后,在publish我指定了错误的用户名和密码并订阅了相同的主题,当我运行App时,我会正常收到这些值。

我错误地使用了密码和用户名?

要注意:我尝试了使用不同clientID的相同程序,即使指定了错误的密码,我也会收到已发布的值。

1 个答案:

答案 0 :(得分:0)

您需要设置一个acl文件和一个密码文件,以便使用户名和密码来控制对主题的访问。

请阅读mosqitto.conf和mosquitto_passwd手册页,了解这两个文件格式的详细信息

http://mosquitto.org/man/mosquitto-conf-5.html

http://mosquitto.org/man/mosquitto_passwd-1.html