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

时间:2013-11-10 15:55:18

标签: firebase firebase-security

我有一组签名,其中每个签名都有一些属性:public:fullname,city,然后是email。

我希望将电子邮件属性保密,我一直在努力编写正确的规则,只返回fullname和city。这是我的rules.json到目前为止的样子:

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

当我转到/签名终点时,我希望收到一系列包含公共数据的签名,但不会收到电子邮件地址。

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

1 个答案:

答案 0 :(得分:4)

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

因此,尝试加载/signatures处的所有数据都将失败,因为您的客户端无权读取该位置的所有数据,但您确实有权阅读某些数据那里的数据。同样,写入某个位置的行为方式相同,并且在您的操作继续之前需要完全权限。

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

{
  "rules": {
    ".read": false,
    ".write": false, 
    "signatures-public": {
      ".read": true,
      "$signatureID": {
        // ... public data here
      }
    },
    "signatures-private": {
      "$signatureID": {
        // ... private data here
      }
    }
  }
}