如何将验证安全规则应用于 Firebase 实时数据库中的密钥

How can I apply a validation security rule to the key in Firebase's Realtime Database

我对 Firebase 实时数据库的验证安全规则有些困惑。我目前设置数据库的方式如下所示:

(Database ID)
  users
    (Google UID)
      dayRatings
        2022-01-01: 2
        2022-01-02: 4
        2022-01-03: 5
      settings
        (Not implemented yet)
    (Google UID)
      dayRatings
        2022-01-01: 3
        2022-01-02: 1
        2022-01-03: 1
      settings
        (Not implemented yet)

用户可以添加自己的评分,但评分未经验证。我想验证评级的键(例如 2022-01-01)和值,但我对如何对这些进行验证感到困惑,因为键可能因用户的选择而异。

现在,我的安全规则只确保用户只能读取和写入他们自己的文档,但不会以任何方式验证数据。

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

如果密钥不固定,如何进行验证?我的数据库结构是否正确?

如有任何帮助,我们将不胜感激。

您可以为日期添加另一个 wildcard capture variable

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid"
        "$date": { //  capture any child node
          ".validate": "..." //  validate its value
        }
      }
    }
  }
}

这里的$date$uid是一样的,只是变量名不同,在JSON.

中级别不同