我有一组联系人(订户):
{
"contacts": {
"-LHi-8bIG4xaZADdc9mf": {
"name": "John Doe",
"email": "example@example.com"
},
"-LHi-PL2HORYJTXB2MjE": {
"name": "Jane Doe",
"email": "example@example.com"
}
}
}
我现在需要一个安全规则,以允许匿名用户添加新条目,但不能读取或更新现有条目。
我目前使用此规则,但它似乎还允许更新现有条目以及覆盖整个“联系人”集合:
{
"rules": {
"contacts": {
".read": false,
".write": "newData.exists()"
}
}
}
我也尝试过!data.exists()
,但这似乎完全限制了写访问权限。
答案 0 :(得分:2)
您当前的规则适用于整个联系人节点。因此,如果存在任何数据,您将无法添加其他任何内容。
您需要做的是在规则中使用wildcard添加一个额外的层:
{
"rules": {
"contacts": {
// This is the wildcard that represents the user uid
"$user_id": {
".read": false,
".write": "!data.exists()"
}
}
}
}
也请查看有关existing data vs new data的文档。