【问题标题】:Can you control individual properties in firebase realtime database security rules?您可以控制 Firebase 实时数据库安全规则中的各个属性吗?
【发布时间】:2019-05-02 15:53:06
【问题描述】:

我需要控制对 firebase rtdb 中用户目录中用户对象下各个属性的访问。我目前的规则如下:

{
  "rules": {
    "users": {
      "$uid": {
        "name": {
          ".write": "auth.uid === 'adminID' || $uid === auth.uid",
            ".read": "auth.uid === 'adminID' || $uid === auth.uid"
        },
        "plans": {
          ".write": "auth.uid === 'adminID' || $uid === auth.uid",
            ".read": "auth.uid === 'adminID' || $uid === auth.uid"
        },
        "survey": {
          ".write": "auth.uid === 'adminID' || $uid === auth.uid",
            ".read": "auth.uid === 'adminID' || $uid === auth.uid"
        },
        "survey_done": {
          ".write": "auth.uid === 'adminID' || $uid === auth.uid",
            ".read": "auth.uid === 'adminID' || $uid === auth.uid"
        },
        "notes": {
          ".write": "auth.uid === 'adminID'",
            ".read": "auth.uid === 'adminID'"
        },
        "status": {
          ".write": "auth.uid === 'adminID'",
            ".read": "auth.uid === 'adminID'"
        }
      }
    },
    "sending": {
      ".write": "auth.uid === 'adminID'",
      ".read": "auth.uid === 'adminID'"
    }
  }
}

管理员应该能够访问所有数据,但是当我在我的网络应用程序上以他的身份登录时,我收到了 permission_denied 错误。

此外,用户(不是管理员)应该能够看到他们的name, plans, survey and survey_done 属性,但其他受管理员保护的属性都看不到。当用户向users/their-user-id 发出读取请求时,我收到与上述相同的错误。理想情况下,它只会返回用户有权访问的所有属性,但用户访问这些属性的唯一方法是单独读取对它们的请求。

我正在使用的查询是: firebase.database().ref("users").child(id).once("value")

【问题讨论】:

  • 请编辑问题以显示您尝试使用的查询。

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


【解决方案1】:

当您查询数据库中特定节点的内容时,安全规则要么允许访问该节点及其所有子节点的整个内容,要么拒绝所有访问。您不能使用安全规则从视图中过滤某些子项。

通常人们所做的是将节点拆分为两个子节点,并根据用户所需的角色保护每个子节点。因此,在您的情况下,将有一个节点包含名称、计划、调查和调查完成。然后会有另一个节点用于注释和状态。每个容器节点都有不同的权限。

【讨论】:

    猜你喜欢
    • 2020-12-28
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2020-04-25
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多