在Firebase实时数据库中仅在一个节点上禁用读取规则

时间:2019-05-09 15:27:09

标签: firebase firebase-realtime-database firebase-authentication

我有一个连接到我的angular 6项目的firebase实时数据库, 数据库中的写入规则设置为false,因为我正在使用函数来添加,编辑,删除数据库中的任何内容 规则标签中的规则就是这样

  "rules": {
    ".read": "auth != null",
    ".write": false,
  }
}

所以我的问题是我如何才能禁用读取,仅对于一个节点将其命名为“ companies”,因为我需要给它提供更高的安全性,并且也仅使用该节点的功能来发送读取请求。 附注:除了“ companies节点”之外,我还有很多节点
database structure

1 个答案:

答案 0 :(得分:0)

一旦节点被授予读取权限,则以后的规则将无法撤销该权限。来自documentation

{
  "rules": {
    "foo": {
      ".read": true,
      ".write": false
    }
  }
}
     

.read和.write规则级联,因此此规则集授予对以下内容的读取权限   路径/ foo /处的任何数据,以及更深层的路径,例如   / foo / bar / baz。 请注意,.read和.write规则在   数据库会覆盖更深层的规则,因此对/ foo / bar / baz的读取权限将   在此示例中,即使路径上的规则仍然被授予   / foo / bar / baz评估为false。

因此,稍后无法在更深的节点中更改对数据库根目录的读取访问权限的浅授予。

您将必须扩展规则,以仅允许访问要用户读取的节点,并省略要拒绝访问的子节点。