我有一组签名,其中每个签名都有一些属性:public:fullname,city,然后是email。
我希望将电子邮件属性保密,我一直在努力编写正确的规则,只返回fullname和city。这是我的rules.json到目前为止的样子:
{
"rules": {
"signatures": {
"$signatureID": {
"public": {
".read": true
},
"email": {
".read": false
}
}
}
}
}
当我转到/签名终点时,我希望收到一系列包含公共数据的签名,但不会收到电子邮件地址。
到目前为止,我没有任何运气能够以我想要的方式工作。难道我做错了什么?我应该以不同的方式构建数据吗?
答案 0 :(得分:4)
关于安全规则,Firebase操作是全有或全无。
因此,尝试加载/signatures
处的所有数据都将失败,因为您的客户端无权读取该位置的所有数据,但您确实有权阅读某些数据那里的数据。同样,写入某个位置的行为方式相同,并且在您的操作继续之前需要完全权限。
要处理此用例,请考虑重构您的数据:
{
"rules": {
".read": false,
".write": false,
"signatures-public": {
".read": true,
"$signatureID": {
// ... public data here
}
},
"signatures-private": {
"$signatureID": {
// ... private data here
}
}
}
}