Firebase经过身份验证,但无法读取或写入数据

时间:2018-09-20 13:52:37

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

我已经通过Gmail,Facebook,Twitter实现了Firebase身份验证。

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

例如,要允许已登录用户具有读/写访问权限,仅您的规则应类似于-

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

答案 1 :(得分:0)

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

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

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

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

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

如果您不希望任何人能够读写数据库,例如暂时禁用您的网站或应用程序:

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

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

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

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

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

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