Firebase安全规则:公共数据与私有数据

Kyl*_*nan 4 firebase firebase-security

我有一个签名集合,每个签名都有一些属性:public:全名,城市,然后是电子邮件。

我想保持电子邮件属性的私密性,我一直在努力编写正确的规则以仅返回全名和城市。到目前为止,这是我的rules.json内容:

{
    "rules": {
        "signatures": {
            "$signatureID": {
                "public": {
                    ".read": true
                },
                "email": {
                    ".read": false
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我转到/ signatures端点时,我希望接收带有公共数据的签名数组,而不希望接收电子邮件地址。

到目前为止,我还没有运气让它按我想要的方式工作。难道我做错了什么?我应该以不同的方式构造数据吗?

Rob*_*rco 5

关于安全规则,Firebase操作是全有或全无。

结果,尝试加载所有数据/signatures将失败,因为您的客户端无权读取该位置的所有数据,尽管您确实有权读取该位置的某些数据。同样,写入位置的行为也相同,并且需要完全许可才能继续操作。

要处理此用例,请考虑按以下方式重组数据:

{
  "rules": {
    ".read": false,
    ".write": false, 
    "signatures-public": {
      ".read": true,
      "$signatureID": {
        // ... public data here
      }
    },
    "signatures-private": {
      "$signatureID": {
        // ... private data here
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)