EMQX 认证完成: username=9PSfpC7Yp53fih5H, result={“result”:“allow”,“is_superuser”:false,“acl”:[{“topic”:“$thing/9PSfpC7Yp53fih5H”,“permission”:“allow”,“action”:“subscribe”},{“topic”:“#”,“permission”:“deny”,“action”:“publish”}]}
限制了publish为deny,但是还是一直能发送
FIle配置如下,并且未使用
{allow, {username, {re, “^dashboard$”}}, subscribe, [“$SYS/#”]}.
{allow, {ipaddr, “127.0.0.1”}, all, [“$SYS/#”, “#”]}.
{deny, all, subscribe, [“$SYS/#”, {eq, “#”}, {eq, “+/#”}]}.
配置了客户端授权后,返回deny,然后mqtt.x点击断开链接的时候,就菊花转圈圈
用图片标记的username,设置了publish为deny,但是还能跨主题发送。
http试了不行,我用回mysql如上图,结果还是acl一样能跨主题发送
日志里面显示是拒绝 publish 的。
MQTT Publish 返回 PUBREC 135:未经授权的发布
当您在使用MQTT协议进行消息发布(Publish)时,如果收到返回的PUBREC
数据包,并且其中包含原因码(Reason Code)135,这明确表示**客户端未经授权(Not authorized)**向指定主题(Topic)发布消息。
MYSQL是因为你的 sql 语句没有查到。no_match 的默认行为为 allow,可以这改。
5.10.0的版本,我是否可以理解为用http服务的,在认证的时候返回下面的acl就可以了,不用在客户端授权重复配置了?
{
"acl": [
{
"action": "subscribe",
"permission": "allow",
"topic": "$thing/9PSfpC7Yp53fih5H"
},
{
"action": "publish",
"permission": "deny",
"topic": "#"
}
],
"is_superuser": false,
"result": "allow"
}
我不知道我这个返回结果是否有问题,但是目前来说还是可以跨权限发布主题的
是回复了。。。
最后一个问题:5.10.0的版本,我是否可以理解为用http服务的,在认证的时候返回下面的acl就可以了,不用在客户端授权重复配置了?
是的,在里面加了 acl 就是这个作用。这样所有的 action 是最高效的。