auth_pgsql插件ACL配置无效

环境信息

  • 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

ACL鉴权,在emqx中有默认开启的一个内置配置,如下图,请先关闭