4

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

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

{
    "rules": {
        "signatures": {
            "$signatureID": {
                "public": {
                    ".read": true
                },
                "email": {
                    ".read": false
                }
            }
        }
    }
}

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

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

4

1 回答 1

5

关于安全规则,Firebase 操作是孤注一掷。

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

要处理此用例,请考虑像这样重构您的数据:

{
  "rules": {
    ".read": false,
    ".write": false, 
    "signatures-public": {
      ".read": true,
      "$signatureID": {
        // ... public data here
      }
    },
    "signatures-private": {
      "$signatureID": {
        // ... private data here
      }
    }
  }
}
于 2013-11-10T17:08:33.370 回答