【发布时间】:2018-10-30 21:43:01
【问题描述】:
我正在根据我的 firebase 数据库调整规则。当我尝试将新数据设置到我的数据库时,我总是被拒绝。这是我的数据库的规则:
{
/* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
"rules": {
"challenges":{
".write": "auth != null",
//".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" || ((newData.exists() && !data.exists()) || (auth.uid.value == data.child(\"player1Uid\").val() || auth.uid.value == data.child(\"player2Uid\").val()))",
".read": "auth != null"
},
"comments":{
".write": "auth != null",
// ".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" || ((newData.exists() && !data.exists()) || auth.uid.value == data.child(\"writerUid\").val())",
".read": "auth != null"
},
"lessons":{
".write": "auth != null",
//".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" || ((newData.exists() && !data.exists()) || auth.uid.value == data.child(\"writerUid\").val())",
".read": "auth != null"
},
"posts":{
".read": "auth != null",
//".write": "auth != null"
"$postId": {
// a new post can be created if it does not exist
// existing posts can only be edited by their original "author"
".write": "(!data.exists() && newData.exists() && auth != null) || data.child('writerUid').val() == auth.uid || auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" "
//".validate": "newData.hasChildren(['title', 'author', 'timestamp'])",
}
},
"questions":{
".write": "auth != null",
//".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" || ((newData.exists() && !data.exists()) || auth.uid.value == data.child(\"writerUid\").val())",
".read": "auth != null"
},
"users":{
".write": "auth != null",
//".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" || ((newData.exists() && data.child(\"userEmail\").val() != null) || auth.token.email == data.child(\"userEmail\").val())",
".read": "auth != null"
},
}
}
当我尝试添加新帖子时,如果我尝试使用我在应用程序中硬编码编写的 uid 添加新帖子,它总是被拒绝,它也被拒绝。我花了很长时间尝试设置我的规则,但直到现在我才设置它,我发现规则无法调试,所以我希望有人帮助我解决这个问题。
这是我的数据库结构:
【问题讨论】:
标签: firebase firebase-realtime-database firebase-security