在 firebase 中,如何在允许访问其他密钥的同时保护特定密钥

In firebase, how do you secure a specific key whilst allowing access to others

再次遇到 Firebase 安全方面的问题。

假设我在 firebase

中有以下 json 数据结构
{
  "users" : {
    "userguid001" : {
    "name" : "Test User 1",
    "email" : "test1@test.com",
    "emailverified" : "true",
    "otherinfo1": "some text",
    "otherinfo2": "some more text",
    "otherinfo3": "and some more text"
  },
  "userguid002" : {
    "name" : "Test User 2",
    "email" : "test2@test.com",
    "emailverified" : "true",
    "otherinfo1": "some text",
    "otherinfo2": "some more text",
    "otherinfo3": "and some more text"
  },
  "userguid003" : {
    "name" : "Test User 3",
    "email" : "test3@test.com",
    "emailverified" : "true",
    "otherinfo1": "some text",
    "otherinfo2": "some more text",
    "otherinfo3": "and some more text"
  }
}

}

有什么方法可以允许用户(知道 userguid)一般 read/write 访问特定用户分支,同时禁止对该分支内的特定键进行写访问 - 即 "emailverified" 和 "email"?

我需要这个,因为我们进行了一些服务器端处理来验证电子邮件地址,我们不希望人们能够在不通过我们的验证系统的情况下输入经过验证的电子邮件地址。

我认为安全规则类似于以下内容,但这显然不适用于 read/write 逻辑在 firebase 中向下流动的方式:

{
  "rules": {
    ".read": false,
    ".write": false,
    "users": {
      "$userid": {
        ".read": true,
        ".write": "true",
        "emailverified" : {
          ".read": true,
          ".write": "false"
        },
        "email" : {
          ".read": true,
          ".write": "false"
        }
      }
    }
  }
}

在这个阶段我能想到的唯一方法是将它分成两个根分支(一个用户可以 read/write 访问,另一个用户只能读取)。我已经多次看到这种方法,但只是想知道我是否可以做些什么来将它全部放在一个分支下。

抱歉,如果这是一个重复的问题,但我很难理解许多问题中出现的一些示例,因为它们似乎不完全符合我的要求。

谢谢。

security rules cascade and cannot be used as filters the answer would have to be no. Please check out the guide 以来,在这里省去一些麻烦。

解决方案是将私有和 public 数据拆分到它们自己的路径。

/user_profiles/$user_id/email_verified
/private_user_data/$user_id/email