Security Firebase安全性:从数据值进行读写访问

Security Firebase安全性:从数据值进行读写访问,security,firebase,firebase-security,Security,Firebase,Firebase Security,我正在构建一个简单的数据结构,我希望Firebase安全规则能够适应它 现在我获得了读取权限的权限\u被拒绝 我知道您通常应该围绕安全规则来设计数据结构,但是对于这种数据结构,有非常具体的原因 所以我想尝试让安全规则围绕它工作 以下是我的数据的json导出: 以下是到目前为止我对安全规则的了解: 我从未见过一个用例有两个$location变量,一个接一个,所以我可以想象这就是问题所在。欢迎任何意见。 谢谢 更新 感谢Frank建议使用安全模拟器(https://.firebaseio.com

我正在构建一个简单的数据结构,我希望Firebase安全规则能够适应它

现在我获得了
读取权限的
权限\u被拒绝

我知道您通常应该围绕安全规则来设计数据结构,但是对于这种数据结构,有非常具体的原因 所以我想尝试让安全规则围绕它工作

以下是我的数据的json导出:

以下是到目前为止我对安全规则的了解:

我从未见过一个用例有两个
$location
变量,一个接一个,所以我可以想象这就是问题所在。欢迎任何意见。
谢谢

更新

感谢Frank建议使用安全模拟器(https://.firebaseio.com/?page=Simulator),我玩了一会儿就很快解决了问题。谢谢你,弗兰克


我不明白(尽管我读了十几遍)这个概念。一旦我得到了它,就很容易了。

对我来说很有用:
newfirebase(
newfirebase”)https://stackoverflow.firebaseio.com/29297747/form/form一次('value',函数{console.log(s.val());})
vs
newfirebase('https://stackoverflow.firebaseio.com/29297747/users/116296988270749049875once('value',函数{console.log(s.val());})
。您可以设置类似的复制吗?Firebase仪表板中的安全模拟器也清楚地解释了这些读取失败的原因。如果你还没有试过模拟器,下一站可能会很好。同时,我在用于测试的Firebase上重新启用了全局读取;否则太多现有的小提琴将无法工作。谢谢你,弗兰克!我一进入安全模拟器,一切都很快变得有意义。我现在明白了!太好了,你终于明白了。规则的级联效应确实是其中一个棘手的部分。你认为你能把你的发现写在答案里吗?StackOverflow鼓励自答,了解问题所在可能有助于其他人。事实上,请将您的发现反馈给社区。
{
  "form" : {
    "form" : {
      "data" : "Form",
      "owner" : "116296988270749049875",
      "public" : true
    }
  },
  "users" : {
    "116296988270749049875" : {
      "data" : "Daniel Murawsky"
    }
  }
}
{
    "rules": {
        "$form":{
          "$dataId":{
            ".read": "data.child('public').val() == true",
            ".write": "data.child('owner').val() == auth.uid"
          }
        }
    }
}