这套规则工作正常,并按预期提供输出
{
"rules": {
"intents" : {
".read" : "auth.uid === data.child('to').val()",
".write" : true
},
"messages" : {
".read": "auth.uid !== null",
"$message": {
".write": true
}
}
}
}
但是,这套规则不允许任何用户读取任何数据,尽管写操作在这个集合中工作正常。
{
"rules": {
"intents" : {
".read" : "auth.uid === data.child('to').val()",
".write" : true
},
"messages" : {
"$message": {
".read": "auth.uid !== null",
".write": true
}
}
}
}
对我来说,这两套看起来几乎完全相同。是否有任何" Firebase安全规则"我失踪的规则?
注意这些规则都经过测试,未对数据库或任何代码进行任何更改。只显示了所显示的规则。
答案 0 :(得分:2)
这两套规则有一个重要区别:第一套规则允许阅读"消息"在一个操作中,而另一个操作只允许一次读取任何单个消息。你可能试图在一次操作中读取所有消息,只有第一条规则才能让你这样做。
{
"rules": {
...
"messages" : {
".read": "auth.uid !== null", // Here: Can read all at once
"$message": {
".read": "auth.uid !== null", // Here: Can only read one at a time
".write": true
}
}
}
}