无法更新Firebase安全规则

时间:2020-05-26 12:06:39

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

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

{
  "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"
      }

  }
}

我的数据样本:

sample of my data

Playground

1 个答案:

答案 0 :(得分:0)

您在游乐场屏幕截图中使用的这些规则:

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

  }
}

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

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

使用您在游乐场屏幕快照中设置的用户,您可以读取/写入位置/c252019c-c9c3-461e-bb79-e8a346862f08(用户的UID)。