错误报告
环境
- EMQX 版本:4.1
- 操作系统版本:centos
问题
- 配置redis+http鉴权链
- 最初时,redis为空,当客户端A订阅topicA主题时,会先去redis,redis匹配不到,会去http。http若匹配到,我们会往redis里写入topicA,可是当客户端再订阅topicB时,redis匹配不到后,也不去http了,直接拒绝掉了。
你好,你往 Redis 写入的数据是什么样的?
然后 Redis 和 HTTP 的配置也最好提供一下。
了解,Redis 鉴权的运行规则是这样的,只有客户端在 Redis 中不存在任何 ACL 规则时,才会继续走到 HTTP 鉴权,而如果这个客户端在 Redis 存在至少一条 ACL 规则时,都会进入鉴权流程,如果没有与当前主题和操作匹配的规则,就会被拒绝掉。
所以你需要在从 MySQL 查询成功时,把这个客户端需要用到的所有 ACL 规则都同步到 Redis 中去。
这样是不是不太合理,因为设备在订阅的时候,若是一个topic一个topic的订阅,调用接口的是也是参数里也只有一个topic,这样http接口只会往redis里存一个topic, 等订阅下一个的时候,都走不到http接口,也就没法同步到redis里
这确实是一个问题,您先看看是否有办法将所有的规则一次性同步到 Redis 中?我把这个问题反馈给我们的产品和研发团队。
好的,辛苦尽早反馈,感谢