acl我怎么配置才可以只有不是超级管理员订阅带#号的

环境信息

  • EMQ X 版本:
  • 操作系统及版本:
  • 其他

问题描述

acl我怎么配置才可以是超级管理员才可以订阅带#号的

配置文件及日志

订阅带有#的这个不能控制。这个不符合订阅主题定义,可以控制已知的订阅主题带#号的,比如 a/#,b/c/#等,除非你对其他每个用户都控制到具体的主题。可以参考这里:发布订阅 ACL | EMQ Docs

不是超级管理的话, 只能订阅a/2,a/3等等, 不能订阅a/#

#号在这里应该是通配符。a/#包括a/2和a/3,包括所有的a/*

故#无法作为主题。

我要的是 不是超级管理员不能订阅 a/#, 但是能订阅a/2

明白你的意思了。

{allow, all, subscribe, ["a/2"]}.
{deny, all, subscribe, ["a/#", {eq, "#"}]}.

你试试这样可以不,加载时从下往上加载,上边的给下边的开了特例。

可以的, 我想问问mysql 认证{deny, all, subscribe, [“a/#”, {eq, “#”}]}. 怎么实现这个了

官方文档都有的,你可比对上面的语句转换成sql语句。

3d7195ea0181a505fbfe9759b89deaf
我配置了这样的然后 他还是能订阅 b/# . 感觉没启动效果

我用acl.conf 加上是管用的

{eq,"b/#"}

换成

b/#

试试

这样的话 我连 b/1 也不能订阅了

我建议你仔细看看官方文档,研究研究哪里不清楚再来问。

3d7195ea0181a505fbfe9759b89deaf
这个我配置在mysqlacl 没有效果,在acl.conf中写{deny, all, subscribe, [{eq, “b/#”}]}. 管用
这个是为啥了