如何阻止实时数据库Firebase中仅对节点或某些键的读取访问?

我只想阻止对一个节点的读取访问。

假设我有这样的节点

"0" : {
//somedata
},"1": {
//somedata
},"2": {
//somedata
},"3": {
 //my private data
}

现在,我不想从任何连接中读取“ 3”。应在此处编写哪些规则以防止对其进行读写访问?

我尝试使用以下规则:-

{
  "rules": {
      "$3": {
        ".read": false,}
    ".read": true,".write": "auth!=null && auth.uid == 'myuid'",}
}

如果我这样做,那么在child_add中,所有节点也都将“ $ 3”更改为“ 3”了

  {
     "rules": {
       ".read": true,"$3": {
           ".read": false,}
     }
  }

第二个给出了所有节点,因为在规则的第一行中,我使用read键为true,即在级联规则上工作,因为.read和.write规则从firebase docs {{3} }

如果我需要针对相同或不同方法的任何建议,请建议我吗? 谢谢,伙计们!

zzzzzadsddsazzzqq 回答:如何阻止实时数据库Firebase中仅对节点或某些键的读取访问?

这应该有效:

{
  "rules": {
      "3": {
        ".read": false,".write": false,}
    ".read": true,".write": "auth!=null && auth.uid == 'myuid'",}
}

首先检查,如果数据为“ 3”,则将其阻止并返回。如果没有检查,请检查以下规则(在这种情况下,请允许经过身份验证的用户)。

,

你很近。正确阅读后,规则会从较高的层级降级到更具体的层级。因此,如果您批准更高级别的写操作(如对数据库根目录所做的操作一样),则“允许”写权限将应用于整个数据库。

$用于identify a variable name in the path。因此,当您使用"$3"时,实际上是在定义一个名为"$3"的变量,而不引用特定的键"3"。您要做的是指定一个变量,该变量用于所有非"3"的值,按照惯例,该变量称为"$other"

{
  "rules": {
    "3": {
      ".read": false,".write": false
    },"$other": { // any key not named above at this level  
      ".read": true,".write": "auth!=null && auth.uid == 'myuid'"
    }
  }
}
本文链接:https://www.f2er.com/3082782.html

大家都在问