【问题标题】:Disable read rule on only one node in firebase real-time database仅在firebase实时数据库中的一个节点上禁用读取规则
【发布时间】:2019-05-09 15:27:09
【问题描述】:

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

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

所以我的问题是如何禁用读取,只有一个节点可以将其命名为“公司”,因为我需要给它更多的安全性并发送读取请求,也只使用该节点的功能。 P.S:除了“公司节点”之外,我还有很多节点

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 所以我得给数据库的各个节点写各种读规则,不是吗?
    • 是的,您必须确定您希望用户能够阅读的每个孩子。您还可以使用通配符并在规则逻辑中检查其值以确定用户是否可以阅读它。
    • 非常感谢道格 :)
    猜你喜欢
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2016-10-19
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多