Security 在firebase中,我应该编写哪些安全规则来只允许推送对象
我在根目录中有messages对象,它只是字符串数组。Security 在firebase中,我应该编写哪些安全规则来只允许推送对象,security,firebase,firebase-security,Security,Firebase,Firebase Security,我在根目录中有messages对象,它只是字符串数组。 我想允许用户推送新对象。若他们可以推送到消息根目录,那个么他们应该对它有写权限,这意味着他们可以轻松地用其他有效数据替换整个消息对象。我应该编写什么样的安全规则来避免这种情况?您可以编写一个规则,允许在数据不存在时添加数据,但防止使用以下规则修改或删除数据 ".write": "!data.exists() && newData.exists()" “data”变量是Firebase中的当前数据如果允许写入,则“newDa
我想允许用户推送新对象。若他们可以推送到消息根目录,那个么他们应该对它有写权限,这意味着他们可以轻松地用其他有效数据替换整个消息对象。我应该编写什么样的安全规则来避免这种情况?您可以编写一个规则,允许在数据不存在时添加数据,但防止使用以下规则修改或删除数据
".write": "!data.exists() && newData.exists()"
“data”变量是Firebase中的当前数据如果允许写入,则“newData”是结果数据
有关更详细的解释,请查看。完整的规则定义应为
{
"rules": {
".read": false,
"feedback": {
"$key": {
".write": "!data.exists()"
}
}
}
}
这使您可以在
/feedback
位置进行推送。您可以自由选择变量名$key
您要查找的是“仅在位置中还没有数据时写入”规则。Firebase文档中有一个这样的例子。一旦我使用了更好的键盘,我会查一下。找到了链接,但Saeed同时已经回答了。为了完整起见,《安全指南》正好提供了您在本节中寻找的示例:嗨,Saeed,这也是我所认为的,但我无法让它工作。我正在使用写入规则推送到一个位置反馈:反馈:{.write:“!data.exists()”}
。如果反馈不存在,则第一次推送成功,但下一次推送会出现以下错误:FIREBASE警告:设置为/feedback/-KDQSPPW7e9QurROMUb7失败:权限被拒绝
。显然,data.exist()在某个位置feedback
下时为真。你知道我做错了什么吗?找到了答案。看我对这个问题的回答。