【发布时间】:2016-12-18 20:49:09
【问题描述】:
我目前正在创建 Firebase 安全规则,以防止用户将节点设置为 null 并删除该节点中的所有数据。
这是我的架构
{
"folder" : {
"item1" : {
"dataset1" : {
"data1" : 123,
"data2" : 456,
"data3" : 789
}
}
}
}
这是我的规则
{
"rules": {
"folder": {
// users cannot delete items in the node folder
".write": "newData.exists()",
// item is a variable
"$item": {
"dataset1": {
// dataset1 must have certain nodes and can't be deleted (set to null)
".validate": "data.hasChildren(['data1', 'data2', 'data3']) && newData.exists()",
"data1": {".validate": "newData.isNumber()"},
"data2": {".validate": "newData.isNumber()"},
"data3": {".validate": "newData.isNumber()"},
// using the variable $other means any node that isn't data1, data2, data3 is denied
"$other": {".validate": false}
}
}
}
}
}
使用内置模拟器,我得到了以下结果:
这在位置设置为“/folder/item1”和“/folder/item1/dataset1”时有效
如果我在 data1 中有更深的节点,它们都会被删除,因为允许写入。
感谢您阅读。接受任何答案,最好我不需要更改架构。
【问题讨论】:
标签: firebase firebase-realtime-database firebase-security