安全节点的数据结构?

时间:2017-03-06 23:45:54

标签: firebase firebase-realtime-database

简单的引用工具。想要向“经销商”显示价格/定价。这种结构是否合适?

如果我在builds\$key\price节点上设置了更具体的规则(以限制价格访问),那么尝试在.once上阅读builds\-Ke_yHGa-c-acXF5_J9B的非经销商似乎会失败。

那么,我必须构建一个单独的prices根节点吗?我想是这样的......?

然后

{
  "...some path...": {
     ".read": "root.child("dealers/" + auth.uid).val() === true"
  }
}

提前致谢。

{
  "builds" : {
    "-Ke_yHGa-c-acXF5_J9B" : {
      "created" : 1488843260381,
      "last modified" : false,
      "model" : "1VR",
      "price" : "1999.00",
      "status" : "saved",
      "title" : "test build",
      "uid" : "q5b9AJgWATdbNF5y2JZctitx1Qx2"
    }
  },
  "dealers" : {
    "DsZ1wSUOmsceMKqCKLZwhpg1vjA3" : true,
    "R9s2qY6p87cas750wJz5wAB3sfJ3" : false,
    "q5b9AJgWATdbNF5y2JZctitx1Qx2" : true
  },
  "users" : {
    "DsZ1wSUOmsceMKqCKLZwhpg1vjC2" : {
      "displayName" : "Eric Doe",
      "photoUrl" : "http://abs.twimg.com/sticky/default_profile_images/default_profile_3_normal.png",
      "provider" : "twitter.com"
    },
    "R9s2qY6p87cas750wJz5wAB3sfk5" : {
      "displayName" : "Ron Royston",
      "email" : "rrrrrrrr@gmail.com",
      "provider" : "password"
    },
    "q5b9AJgWATdbNF5y2JZctitx1Qx2" : {
      "displayName" : "Ron Royston",
      "photoUrl" : "http://pbs.twimg.com/profile_images/809222728456675365/C-rlXjaN_normal.jpg",
      "provider" : "twitter.com"
    }
  }
}

1 个答案:

答案 0 :(得分:1)

Firebase安全规则允许访问完整的节点。授予对节点的访问权限后,您无法在较低级别访问该访问权限。因此,除了价格之外,您不能拥有允许用户访问所有属性的规则。

如果价格需要与该节点的其他部分不同的安全规则,您确实需要从该节点/分支中提取价格。

对于类似的情况,请在此处查看我的答案:How to create public/private user profile with Firebase security rules?