【问题标题】:Firebase real-time database rules granularityFirebase 实时数据库规则粒度
【发布时间】:2021-02-11 11:36:27
【问题描述】:

我从文档中知道 Firebase 的实时数据库有一组规则类型,例如 .write.read

我的问题是:更具体的需求呢? 比如,如果我不仅要授予用户他不能写/不能写的权限,而且他可以写来创建、写来编辑或写来删除怎么办? FRB规则可以区分这些不同的类型以便让我对其进行监管吗?

【问题讨论】:

  • 在 firebase 数据库的文档中阅读它们。如果它在那里,那么我们可以使用它,否则,没有人可以帮助。 Firebase 文档是我这辈子见过的最简单的文档。firebase.google.com/docs/database/android/start

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


【解决方案1】:

是的,您可以这样做。在实时数据库中,您可以使用.validate 规则来确定是否要允许操作。因此,如果您想允许用户写入,但只允许删除(例如),您可以执行以下操作:

{
  "rules": {
    "posts": {
      "$postId": {
        // Anyone can read
        ".read": true,
        // Some write condition
        ".write": ...,
        // User can only write to create or delete, not edit
        ".validate": "!data.exists() || !newData.exists()"
      }
    }
  }
}

在这种情况下,如果!data.exists() - 即如果操作运行之前的数据不存在则创建新的 - 或者如果!newData.exists() - 即删除如果,之后,用户只能写入 RTDB操作后,这条记录中的新数据已经不存在了。

您可以结合这些规则,对您的数据和访问进行非常细粒度的控制。如果您需要 RTDB 安全规则之外的更多访问控制,您可以使用 RTDB 规则锁定数据,并创建 Cloud Functions 以通过服务器端逻辑和处理访问和修改 RTDB。

还可以查看: https://firebase.google.com/docs/rules/rules-language?authuser=0#rule_constructs

【讨论】:

    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 2020-08-08
    • 2020-02-16
    • 2019-10-11
    相关资源
    最近更新 更多