Firebase数据库规则模拟器允许未经身份验证的用户进行读写

时间:2017-05-19 18:07:32

标签: firebase firebase-realtime-database firebase-security firebase-console

模拟器允许读/写Posts键,但结果对于Users键规则是正确的。帖子下的每个帖子都有一个uid值,表示用户密钥中的用户。

我的规则是错误还是模拟器错了?温柔,我是Firebase的新手。 :)

Screenshot

两个等于:

Screen

编辑数据视图:https:// i.stack.imgur.com/GaYMj.png(删除" //"周围的空格)

1 个答案:

答案 0 :(得分:2)

尝试更改规则以检查uid子项是否存在。例如:

".read": "data.child('uid').exists() && data.child('uid').val() === auth.uid"

基于快速测试,我认为发生的事情是,当uid子项不存在时,data.child('uid').val()的评估失败,并通过为其赋值false来处理。同样,由于未对用户进行身份验证,因此auth为空,auth.uid也为false。所以你的规则实际上变成".read": "false === false",这是真的。

当我第一次使用您的规则模拟读取时,我在uid下的数据库中没有/posts/1子项,正如您所报告的那样,读取已被授予。当我添加一个uid孩子时,它没有被授予。