刷新其他路径中的数据会导致Firebase安全规则出现问题

时间:2018-12-16 01:54:59

标签: javascript firebase firebase-realtime-database firebase-authentication firebase-security-rules

我正在使用Firebase实时数据库制作口袋妖怪风格的游戏。

对于每个用户,他们都有这样的数据结构:

enter image description here

“ pokemon”节点中的每个条目都有一个ID,该ID与“ tapped pokemon”节点中的ID相对应。

我想使用安全规则来确保没有人可以在“ pokemon”节点中创建一个新节点,该节点的ID存在于“ tappedpokemon”节点中。

我一直在尝试使用如下规则:

{
  "rules": {
    "users": {
      "$user_id": {
        ".read": "$user_id === auth.uid",
        "tappedpokemon" : {
          "$id" : {
            ".write": "!data.exists() || !newData.exists()",
          }
        },
        "pokemon" : {
          "$mon" : {
            ".write": "!data.parent().parent().child('tappedpokemon').child(newData.child('id').val()).exists() && !data.exists()",
          }
        }
      }
    }
  }
}

但是这段代码每次都会产生真实的结果。

firebase.database().ref("users/" + firebase.auth().currentUser.uid + 
  "/tappedpokemon/" + "784193e6-6f94-49a1-958d-877080460a38").set(true);

pokemon_inventory_ref.push({id: "784193e6-6f94-49a1-958d-877080460a38", 
  name:"Lapras", lat:20, lng:38, date:Date.now(), 
  iv: Math.floor(Math.random() * (120 - 20 + 1)) + 20});

有没有办法做到这一点?

0 个答案:

没有答案