Firebase:权限被拒绝 - setValue()

Firebase: Permission denied - setValue()

我无法使用 setValue() 为我的 Firebase 数据库设置值。在日志中 returns me setValue at ... Permission denied。我检查了我的规则:

{
  "rules": {
    ".read": "auth == null",
    ".write": "auth == null"
  }
}

尝试将您的规则更改为以下内容,它会起作用。

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

根据 Frank van Puffelen 的评论,您的规则要求用户通过身份验证。

如果您需要更安全的身份验证,您可以阅读有关身份验证规则的更多信息here以获得其他选项

希望对您有所帮助

首先,您的用户必须经过身份验证,因为 Firebase 提供了许多平台来让用户通过它进行身份验证。示例 - Google、Facebook、Twitter 等。 当用户通过 firebase 控制台进行身份验证时 he/she 可以访问相关的数据库和存储。您还可以使用 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
  }
}

您可以出于测试产品的目的执行此操作,但这不是一种安全的方法。