【问题标题】:Firebase Rules to let users see their own data, ERROR Listener at /jobs failed: permission_deniedFirebase 规则让用户查看自己的数据,/jobs 处的错误侦听器失败:permission_denied
【发布时间】:2019-02-28 16:48:31
【问题描述】:

我正在尝试找出允许我的用户仅在其应用程序中查看其数据的 Firebase 规则。

目前这是我的实时数据库文件:

这是我的 Firebase 设置规则:

 {
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth.uid === $uid"
      }
    },
    "jobs": {
      "$uid": {
        ".read": "auth.uid === $uid"
      }
    }
  }
}

如何更改规则以让用户看到与其用户 ID 相关的数据?

【问题讨论】:

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


    【解决方案1】:

    您似乎使用用户的 UID 作为他们在 jobsusers 中的数据的键。在这种情况下,您可以确保每个用户只能通过以下方式阅读自己的工作和个人资料:

    {
      "rules": {
        "users": {
          "$uid": {
            ".read": "auth.uid === $uid"
          }
        },
        "jobs": {
          "$uid": {
            ".read": "auth.uid === $uid"
          }
        }
      }
    }
    

    请注意,这几乎是 Firebase documentation on securing user data 中示例的文字副本。

    【讨论】:

    • 遗憾的是,在我的应用程序中使用我的身份验证电子邮件时,我收到此错误:/jobs 的侦听器失败:permission_denied
    • 类型读取位置数据 null Auth { "provider": "anonymous", "uid": "5HSJNaWoBFbU8nPSy3zND0gH6n92" } Admin false
    • 请更新您的问题以包含产生该错误的最少代码以及错误消息本身。
    • 我已经更新了这个问题,但是这个答案不起作用,因为在尝试访问数据时仍然会收到错误消息
    • 您的问题仍然没有显示任何引发错误的代码。但是从错误消息中可以清楚地看出,您正在阅读整个 /jobs 节点,这些规则不允许(也不应该允许)。我想您可能会认为规则可用于过滤数据,但它们不能。有关这方面的更多信息,请参阅文档中的 rules are not filters 部分,以及 Stack Overflow 上的 questions about this topic 部分。
    猜你喜欢
    • 1970-01-01
    • 2017-12-26
    • 2019-09-21
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2021-06-10
    相关资源
    最近更新 更多