Firebase 安全规则,禁用在特定节点上写入



我的火力结构看起来像这样:

{
"post": {
    "uid": {
        "text": "Name";
    }
},
"games": {
    "id": {
        "title": "buttons",
        "text": "(user id string)"
    },
    "id": {
        "title": "navbars",
        "text": "(id string)"
    }
},
"guides": {
    "1": {
        "title": "guide",
        "text": "unwriteable string"
    }
}
}

(值无关紧要。

我想允许在每个节点上读写,执行指南节点,

所以我尝试了以下规则:

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

但是,不幸的是,由于"父亲"津贴,Firebase并不关心指南的具体规则,

知道如何实现我的目标吗?

Bacause Firebase 安全规则级联 你不能说有人有权在任何地方写字,后来又说但不能在这里写。

因此,在您的情况下,您必须为其他路径添加规则,如下所示:

{
  "rules": {
    ".read": "auth == null",
      "guides": {
        ".write": false
      },
      "games": {
        ".write": "auth == null"
      },
      "post": {
        ".write": "auth == null"
      }
  }
}

正如加藤所说,这也可以通过以下规则来完成:

{
  "rules": {
    ".read": "auth == null",
    ".write": "auth == null && !newData.hasChild('guides')"
  }
}

第一个示例将允许您仅在gamespost节点中写入,而第二个示例将允许您在除guides节点之外的所有位置写入。

最新更新