4.1版本redis+http鉴权链没生效

错误报告

环境

  • EMQX 版本:4.1
  • 操作系统版本:centos

问题

  1. 配置redis+http鉴权链
  2. 最初时,redis为空,当客户端A订阅topicA主题时,会先去redis,redis匹配不到,会去http。http若匹配到,我们会往redis里写入topicA,可是当客户端再订阅topicB时,redis匹配不到后,也不去http了,直接拒绝掉了。

你好,你往 Redis 写入的数据是什么样的?

然后 Redis 和 HTTP 的配置也最好提供一下。

image
上图是redis的数据;下图是配置

了解,Redis 鉴权的运行规则是这样的,只有客户端在 Redis 中不存在任何 ACL 规则时,才会继续走到 HTTP 鉴权,而如果这个客户端在 Redis 存在至少一条 ACL 规则时,都会进入鉴权流程,如果没有与当前主题和操作匹配的规则,就会被拒绝掉。

所以你需要在从 MySQL 查询成功时,把这个客户端需要用到的所有 ACL 规则都同步到 Redis 中去。

这样是不是不太合理,因为设备在订阅的时候,若是一个topic一个topic的订阅,调用接口的是也是参数里也只有一个topic,这样http接口只会往redis里存一个topic, 等订阅下一个的时候,都走不到http接口,也就没法同步到redis里

这确实是一个问题,您先看看是否有办法将所有的规则一次性同步到 Redis 中?我把这个问题反馈给我们的产品和研发团队。

好的,辛苦尽早反馈,感谢