我无法使用setValue()为Firebase数据库设置值。在日志中它返回我的setValue ...权限被拒绝。我检查了我的规则:
{
"rules": {
".read": "auth == null",
".write": "auth == null"
}
}
答案 0 :(得分:1)
尝试将规则更改为以下内容,然后才能正常工作。
{
"rules": {
".read": true,
".write": true
}
}
根据Frank van Puffelen的评论,您的规则要求用户不进行身份验证。
如果您需要更安全的身份验证,可以阅读有关其他选项的身份验证规则here的更多信息
希望这有助于你
答案 1 :(得分:0)
首先,您的用户必须经过身份验证,因为Firebase提供了许多平台,以便用户对其进行身份验证。示例 - Google,Facebook,Twitter等 当用户通过firebase控制台进行身份验证时,他/她可以访问相关的数据库和存储。您还可以使用Firebase匿名身份验证将用户设为访客。
通过执行身份验证,每个用户都可以使用UID,如果您希望为不同的用户使用不同的规则,可以使用该UID通过编写规则来访问它们。
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
默认情况下,您将在数据库规则部分中获得类似的内容: -
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
这只是意味着如果用户通过身份验证,那么只给他们读写访问权限。适用于所有用户。
通过这样做,您可以让所有人以及那些不使用您产品的人都可以访问您的数据库。
{
"rules": {
".read": true,
".write": true
}
}
您可以执行此操作以测试您的产品,但这不是一种安全的方式。