【问题标题】:Firebase Authenticated but data not able read or writeFirebase 已通过身份验证,但数据无法读取或写入
【发布时间】:2018-09-20 13:52:37
【问题描述】:

我已经使用 Gmail、Facebook、Twitter 实现了 Firebase 身份验证。

我已成功登录firebase,然后我将数据库身份验证规则更改为以下。

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

在 firebase 控制台中显示登录用户列表,但在检索数据时显示权限被拒绝。你能帮我解决这个问题吗?

如果我将上述设置更改为 true,我就可以读取和写入数据。

【问题讨论】:

  • 您已更新数据库规则以阻止对数据库的所有读写查询。所以你得到的许可被拒绝。见firebase.google.com/docs/database/security
  • 如果你想允许经过身份验证的用户读/写你应该更新你的规则{ "rules": { ".read": "auth.uid != null", ".write": "auth.uid != null" } }
  • 亲爱的@sketchthat 真的很感谢。我已经实施了。它真的有效。我错过了这个。非常感谢。

标签: firebase firebase-realtime-database firebase-authentication


【解决方案1】:

将两者都设置为 false 将拒绝所有用户的读/写访问权限。您可以在安全规则中使用auth 语法来识别用户是否已登录。

例如,只允许登录用户进行读/写访问,您的规则应如下所示 -

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

【讨论】:

  • OP没有要求只允许经过身份验证的用户读写数据库,所以这个答案并不完全正确
  • 这听起来像是暗示,但同意我给出的例子可能并不完全相关。
  • 亲爱的@Dude Coder 非常感谢你。它工作。我错过了这个。
【解决方案2】:

顾名思义(数据库身份验证规则),这些规则适用于您的Firebase-Database,即应该允许谁在您的数据库中读取和写入数据,谁不应该。

因此,就您而言,您所做的是-您已将readwrite 都设置为false。这意味着没有人能够读取或写入您的数据库。这就是正在发生的事情(您无法写入数据库)。

但是,当你将它们都设置为true时,那么每个人都可以读写。

因此,如果您希望每个人都能够读取和写入您的数据库,那么您的规则将如下所示:

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

如果您希望没有人能够读取和写入您的数据库,例如临时禁用您的网站或应用:

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

如果您希望每个人都能读取您的数据库,但只希望经过身份验证的成员能够写入您的数据库,就像他们购买了高级帐户一样,现在他们可以编辑网站,那么规则将是:

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

如果您希望只有经过身份验证的成员能够读取和写入您的数据库,那么规则将是:

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

如果您想进一步了解这些东西的工作原理。然后这里是官方文档的链接:Understanding Firebase Database Rules

【讨论】:

    猜你喜欢
    • 2022-08-06
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    相关资源
    最近更新 更多