【问题标题】:Fail to update Firebase security rules未能更新 Firebase 安全规则
【发布时间】:2020-09-13 05:36:39
【问题描述】:

我有一个数据库并收到一封电子邮件,说我的规则不安全。 这就是我现在拥有的:

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

我想将其更改为站点中示例中的内容,因此用户只能读取\写入他的记录,但这不起作用。我被拒绝了。

我做错了什么?

我如何知道我的密钥是 $uid 还是 $user_id?

数据库结构如下:

root
  --uid
    -- all the data

规则:

{
  "rules": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid"
      }

  }
}

我的数据样本:

【问题讨论】:

  • 请编辑您的问题以包含minimal, complete/standalone code that anyone of us can run to reproduce the problem。没有那个代码,很难说为什么这些规则不适合你。
  • 嗨弗兰克,这个问题仅涉及 Firebase 规则游乐场。不是我的代码本身。我添加了我的数据样本。如果需要更多信息,请告诉我。谢谢
  • 在这种情况下,请添加显示所有相关信息的规则游乐场的屏幕截图。没有看到什么对你不起作用,就很难提供帮助。
  • 这些是我在原始消息中添加的规则。还附上了一张图片

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


【解决方案1】:

您在操场截图中使用的这些规则:

{
  "rules": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid"
      }

  }
}

在这些规则中,$uid 是一个变量,这意味着该节点下的规则适用于任何顶级节点。当路径 ($uid) 与他们自己的 UID 匹配时,这些规则允许用户读取/写入他们自己的数据。

但在同一个 Playground 屏幕显示中,您尝试读取 /uid,在这种情况下,uid 只是一个硬编码值。由于auth.uid 不是您用户的实际UID,因此读/写被拒绝。

使用您在 Playground 屏幕截图中设置的用户,您可以读取/写入位置 /c252019c-c9c3-461e-bb79-e8a346862f08(用户的 UID)。

【讨论】:

    猜你喜欢
    • 2020-06-19
    • 2021-07-14
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多