拒绝权限仍会添加到.on()侦听器中

时间:2016-08-02 03:21:13

标签: firebase

我使用firebase的.on()事件监听器来实时监听插入我数据库的条目。我注意到即使数据插入被拒绝,订阅ref的数据插入的用户仍然会获取该数据,即使在数据库中数据从未插入。

在开发我的网络应用程序的聊天模块时,我注意到了这一点。这是一个错误的GIF:https://gfycat.com/VariableFrailBasenji

我已经为新邮件设置了验证规则,其长度必须小于200:

"$msg": { ".validate": "newData.val().length < 200"}

所以,当你看到我粘贴在一堆字母中时,控制台说写入被拒绝,但是对数据库那部分进行.on()订阅的用户仍然收到了消息,即使它没有& #39; t被添加到数据库中。

无论如何,这不是一个有问题的帖子,只是想分享这个可能导致数据泄露的奇怪错误。

1 个答案:

答案 0 :(得分:1)

Firebase SDK在您写入数据库时​​使用延迟补偿等高级技术。这意味着在服务器确认写入之前,它会进入内存数据库缓存并乐观地假定允许写入。

当服务器拒绝写入时,它将删除错误缓存的数据,您应该看到相应的child_removed事件。