Firebase 安全 - 如何停止覆盖
Firebase security - how to stop overwriting
这是我的数据结构:
{
"items" : {
"item0" : {
"uniqueID" : 5,
"uniqueID" : 31,
"uniqueID" : 88
},
"item1" : {
"uniqueID" : 22,
"uniqueID" : 3
}
}
}
我希望用户能够:
1-创建一个新项目
2-创建一个新的uniqueID(条目中的条目)
我想阻止用户:
3-删除任何内容
4-创建上述以外的任何内容
这是我的错误尝试:
{
"rules": {
".read": true,
".write": false,
"items": {
".write": "!data.exists()"
}
}
}
我相信 ".write": false
应该完成任务 3 和 4,而 ".write": "!data.exists()"
应该完成任务 1 和 2,但是这个解决方案阻止了任何数据被写入数据库
应该失败的写入操作:
var killItem0 = {};
killItem0['item0'] = 'all item 0 entries are now replaced by this text';
REF.child('items/').update(killItem0); //this replaces all data held by item0
我认为这样的事情应该可行:
{
"rules": {
".read": true,
"items": {
"$itemID": {
"$uniqueID": {
//check if data is already there and new data in a number (going off your example data for the number part)
".write": "!data.exists() && newData.isNumber()"
}
}
}
}
}
这是我的数据结构:
{
"items" : {
"item0" : {
"uniqueID" : 5,
"uniqueID" : 31,
"uniqueID" : 88
},
"item1" : {
"uniqueID" : 22,
"uniqueID" : 3
}
}
}
我希望用户能够:
1-创建一个新项目
2-创建一个新的uniqueID(条目中的条目)
我想阻止用户:
3-删除任何内容
4-创建上述以外的任何内容
这是我的错误尝试:
{
"rules": {
".read": true,
".write": false,
"items": {
".write": "!data.exists()"
}
}
}
我相信 ".write": false
应该完成任务 3 和 4,而 ".write": "!data.exists()"
应该完成任务 1 和 2,但是这个解决方案阻止了任何数据被写入数据库
应该失败的写入操作:
var killItem0 = {};
killItem0['item0'] = 'all item 0 entries are now replaced by this text';
REF.child('items/').update(killItem0); //this replaces all data held by item0
我认为这样的事情应该可行:
{
"rules": {
".read": true,
"items": {
"$itemID": {
"$uniqueID": {
//check if data is already there and new data in a number (going off your example data for the number part)
".write": "!data.exists() && newData.isNumber()"
}
}
}
}
}