环境信息
- EMQX 版本:4.4
- 操作系统及版本:centos
- Docker
问题描述
我在使用auth_pgsql插件时,配置的相关ACL_QUERY无效。(但auth配置是有效的!)
业务需要,我的数据库的acl表是这样的:
表中的username是我业务中用户的username,并非连接中的username,topic中D或A开头的ID为实际的username。
为了和实际对应,我的配置如下:
EMQX_AUTH__PGSQL__ACL_QUERY="select allow, '$all' as ipaddr, split_part(topic,'/',3) as username, '$all' as clientid, access, topic from acls where split_part(topic,'/',3) = '%u'"
该语句在数据库查询的结果为:
这样就是我最终要表达的意思,username为D4A3qw5S的客户端连接,有权对cooleiot/UXRurdw5/D4A3qw5S这个主题进行订阅和发布。
可最终的结果是,任何主题都可被订阅并报错:
补充:已配置acl_nomatch=deny