Firebase保护数据库中的节点

时间:2016-09-25 18:02:50

标签: firebase firebase-realtime-database firebase-security

我使用的是Firebase。以下是我的一个节点的样子:

--Users
----RandomUID1
----RandomUID2
----RandomUID3

对于规则,这就是我所拥有的:

--"users" : {

----".read": "auth != null && !root.child('blockedUsers').hasChild(auth.uid)",

----".write": "auth != null && !root.child('blockedUsers').hasChild(auth.uid)"

--}

我希望从users节点读取以保持相同,但我希望只能在users节点的子节点上进行写入。这样做的原因是,如果我偶然在一天晚上编写了删除整个users节点的代码,那将是灾难性的。是否可以制定规则,以便不允许在节点本身上写入,但允许写入子节点?

有没有办法确保自己免于因人为错误而可能发生的事故?

1 个答案:

答案 0 :(得分:2)

您可以使用变量Firebase variable rules

。在用户节点我没有添加写规则,这不允许数据修改。

 "users":{
      ".read": "auth != null && !root.child('blockedUsers').hasChild(auth.uid)",
      "$uid": { //where $uid is child
        ".read": "auth!==null && auth.uid == $uid",
        ".write": ""auth!==null && auth.uid === $uid"
      }
    }