Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅显示将userid作为子项的项目_Javascript_Firebase_Firebase Security - Fatal编程技术网

Javascript 仅显示将userid作为子项的项目

Javascript 仅显示将userid作为子项的项目,javascript,firebase,firebase-security,Javascript,Firebase,Firebase Security,以下是我的规则: { "rules": { "deck":{ ".read":true, ".write":true, ".indexOn": "user" } } } 当前运行时: deckRef.once('value', function(dataSnapshot) { console.log(dataSnapshot.ref()); }); 我将返回所有数据: { "deck" : { "-J

以下是我的规则:

{
  "rules": {
    "deck":{
      ".read":true,
      ".write":true,
      ".indexOn": "user"
    }
  }
}
当前运行时:

deckRef.once('value', function(dataSnapshot) {
      console.log(dataSnapshot.ref());
    });
我将返回所有数据:

{
  "deck" : {
    "-JkpwAnieKjQVsdtPD4m" : {
      "deckName" : "Deck 1",
      "user" : "simplelogin:1"
    },
    "-Jkq4unexm-qwhO_U2YO" : {
      "deckName" : "Deck 2",
      "user" : "simplelogin:1"
    },
    "-Jkq5-II1q5yM6w3ytmG" : {
      "deckName" : "Deck 3",
      "user" : "simplelogin:6"
    },
    "-Jks5mbMHmPB9MwnnOCj" : {
      "deckName" : "Deck 4",
      "user" : "simplelogin:1"
    }
  }
}
但是我想阻止任何人访问与用户id不匹配的项目

我尝试将甲板部分更改为:

  "deck": {
    ".read":"data.child('user').val() === auth.uid"
  }

但这不会带来任何回报。理想情况下,如果用户“simplelogin:1”登录,我希望它只返回项目1、2和4;如果用户“simplelogin:6”登录,则返回项目3。

这是编写Firebase安全规则时的常见错误,如果我引用以下内容,可能最清楚:

安全和FIREBASE规则自上而下运行

这是理解安全和Firebase规则的关键概念。子规则只能向父节点已声明的内容授予附加权限。它们不能撤消读或写权限

考虑到您正在努力完成的任务,下一部分似乎也非常相关:

规则不是过滤器

规则是以原子的方式应用的。这意味着,如果数据下的任何子路径不可访问,则整个读或写操作将立即失败


因此,尽管您可能会根据SQL语句中的
WHERE
子句来考虑Firebase安全规则,但它们不是这样工作的。如果您想保护每个用户的数据安全,您必须想出一种不同的方法来建模数据。《安全指南》有一个相当广泛(且复杂)的内容。

我对此很担心。谢谢。可能是第二份