【发布时间】:2020-07-03 11:18:24
【问题描述】:
我依靠实时数据库从这个结构中为我的应用获取数据:
每个A 有3 个B
在这些规则下阅读工作正常:
{
"rules": {
".read": true,
".write": false
}
}
现在,我处于测试模式,我想实现两件事:
1.授予用户独占写入每个A中的路径/../B3/的权限。
2.用户在/../B3/中输入的值必须是数字(最好是整数)。
所以,我做了一些研究,想出了这套规则:
{
"rules": {
"A1":{
"B1":{
".read": true,
".write": false
},
"B2":{
".read": true,
".write": false
},
"B3":{
".read": true,
".write": true,
".validate": "newData.isNumber() && newData.val() % 1 === 0.0"
}
},
"A2":{
"B1":{
".read": true,
".write": false
},
"B2":{
".read": true,
".write": false
},
"B3":{
".read": true,
".write": true,
".validate": "newData.isNumber() && newData.val() % 1 === 0.0"
}
},
"A3":{
"B1":{
".read": true,
".write": false
},
"B2":{
".read": true,
".write": false
},
"B3":{
".read": true,
".write": true,
".validate": "newData.isNumber() && newData.val() % 1 === 0.0"
}
}
}
问题:
我在 Firebase 控制台上使用 Playground 模拟器测试了这些规则,并得到了正确的结果。但是当我尝试在我的测试设备上读取或写入/../B3/ 时,它不起作用。相反,我在 LogCat 中得到了这个异常:
com.google.firebase.database.DatabaseException: Firebase Database error: Permission denied
at com.google.firebase.database.DatabaseError.toException(com.google.firebase:firebase-database@@16.0.4:229)
at com.app.activity$3.onCancelled(activity.java:567)
我认为我在构建规则时遗漏了一些东西。提前致谢。
【问题讨论】:
标签: java android firebase firebase-realtime-database firebase-security