【问题标题】:prevent "delete and update" a child in firebase防止“删除和更新”火力基地中的孩子
【发布时间】:2017-10-22 06:47:45
【问题描述】:

我发现没有办法将安全规则设置为防止对孩子进行“删除和更新”。

".write": "!data.exists() && newData.exists() && !newData.exists()"

这没有意义。

【问题讨论】:

  • 您能详细解释一下您的问题吗?数据库中特定位置的规则".write": "!data.exists() && newData.exists()" 将允许在该位置创建值,但阻止更新或删除。
  • ".write": "!data.exists()" 允许您在当前数据不存在时进行写入,因此不会发生删除和更新,因为您已经写入了数据。

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


【解决方案1】:

为了将来参考,Firebase 控制台可让您测试数据库安全规则,这样您就可以在发布这些规则之前找出在那里有效的方法。话虽如此,如果我正确理解您的问题,您希望允许用户添加到节点,但不能删除或更新。你会寻找类似的东西:

{
  "rules": {
    ...

    "childNodeName": {
       ".write": "!data.exists()"
    }
  }
}

您不应该需要其他两个条件。更不用说,它们永远不会解析为 true,因为无法满足这些条件。

如果您需要将多个子级添加到路径中,但您不希望用户在添加这些子级后修改这些子级,您也可以使用通配符:

{
  "rules": {
    ...

    "childNodeName": {
       "$pushId": {
          ".write": "!data.exists()"
      }
    }
  }
}  

【讨论】:

  • 非常感谢 Jen,这真的很有帮助。我尝试了验证而不是写权限,它工作得很好。
猜你喜欢
  • 2018-01-14
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 2021-06-05
  • 2012-11-30
相关资源
最近更新 更多