【发布时间】:2020-01-04 19:20:57
【问题描述】:
这是我的 firebase json 数据。
{
"Users": {
"MyData": {
"002ab7bUmab1CgQsw53abB3g1Ab1": { //UID
"-A3ABlabkflA_ABabABA": { //this is the databaseReference.child(DBHelper.FIREBASE_POSTS).push().getKey();
"display": "123",
"result": {
"format": "1",
"id": 1,
"numBits": 0,
"syncFirebaseId": "-A3ABlqmkflA_AVabABA",
"syncStatus": -1,
"text": "1234567",
"timestamp": 1514496903005
}
},
"-A2ABlabkf2A_ABabABA": { //this is the databaseReference.child(DBHelper.FIREBASE_POSTS).push().getKey();
"display": "123",
"result": {
"format": "1",
"id": 1,
"numBits": 0,
"syncFirebaseId": "-A3ABlqmkflA_AVabABA",
"syncStatus": -1,
"text": "1234567",
"timestamp": 1514496903005
}
}
}
}
}
}
规则:
{
"rules": {
"Users": {
"MyData": {
"$uid": {
".read": "auth != null && auth.uid == $uid"
}
}
}
}
}
但是当我模拟时,读取操作被拒绝。我想只允许经过身份验证的用户更新与他/她自己相关的数据节点。该用户不应该能够编辑其他人的数据节点 (UID)。
这是读取模拟的结果:
【问题讨论】:
-
请编辑您的问题以包含失败的读写模拟。另外,请将您问题中的 JSON 树的图片替换为实际的 JSON 作为文本。您可以通过单击your Firebase Database console 的溢出菜单 (⠇) 中的 Export JSON 链接轻松获取此信息。将 JSON 作为文本使其可搜索,让我们可以轻松地使用它来测试您的实际数据并在我们的答案中使用它,一般来说这只是一件好事。
-
顺便说一句:您在 JSON 中拼写为
users,在规则中拼写为Users(大写为U)。规则区分大小写,因此 JSON 和规则之间的大小写必须匹配。 -
@FrankvanPuffelen 我编辑了 json 并且我已经尝试了大写字母,但仍然无法执行读取模拟。你的帮助对我很有帮助。
-
请编辑您的问题以包含失败的读写模拟。
-
您正在尝试读取数据库的根目录。由于您的规则授予任何人访问整个数据库的权限,因此读取被拒绝。如果您模拟从
/Users/MyData/$theUidThatYouStruckOut读取,则将被允许。
标签: firebase firebase-realtime-database firebase-security