当前位置: 首页 > 知识库问答 >
问题:

如何使用具有已注册电子邮件的 firebase 身份验证模拟 firebase 数据库规则

晁聪
2023-03-14

我是火库的新手,我正在尝试火库数据库规则和
火库身份验证。
因此,我创建了一个演示电子邮件来测试数据库规则。
电子邮件 : abc@gmail.com
uid : 我的
数据库规则(遵循火基站点) https://firebase.google.com/docs/database/security/user-security
火基数据库规则:

{
  "rules": {
    "users": {
      "$user_id": {
        // grants write access to the owner of this user account
        // whose uid must exactly match the key ($user_id)
        ".write": "$user_id == auth.uid",
        ".read" : "$user_id == auth.uid"
      }
    }
  }
} 


我已尝试将模拟器用于具有以下自定义有效负载的数据库规则,并且无法访问读取或写入。
有效载荷:

{
  "provider": "password",
  "uid": "WfipZwUuNvTIkRYvPxsFqzd1rag2"
}

< br >那么在这一点上我遗漏了什么呢?< br>
更新< br >我需要的是使用firebase authenticate电子邮件来授予对数据库的读写访问权限。< br >我目前正在试用firebase数据库规则模拟器。< br >我一直被拒绝访问。所以也许我的有效载荷不适合认证。需要帮助!!!

共有2个答案

谷良弼
2023-03-14

更新< br>
我测试过了,这次有效。上一次我尝试的规则没有工作,这是非常奇怪的。< br >好的,我假设模拟器的验证意味着我的firebase验证用户是否登录。< br >因此,我的路径和规则在测试期间出现了问题,并且不是我的有效负载< br >如果我希望允许firebase auth用户访问数据库,那么我的规则应该是这样的(我假设)。< br>
规则:fire base auth使用读写权限访问整个数据库。< br >

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

< br >谢谢@d.mares和@MuruGan

岳锦
2023-03-14

根据文档,您应该实现:

{
  "rules": {
    "users": {
      "$user_id": {
        // grants write access to the owner of this user account
        // whose uid must exactly match the key ($user_id)
        ".write": "$user_id === auth.uid",
        ".read" : "$user_id === auth.uid"
      }
    }
  }
} 

注意,您应该实现“==”而不是“==”

上述实现将仅允许用户在该特定位置“/用户/{user_id}”上读取和写入

 类似资料:
  • 我是新的Firebase.我已经建立了一个Firebase实时数据库,如果读写规则设置为true,可以读写它。 我的身份验证有问题。我已经为谷歌和电子邮件加密码设置了身份验证。 我的目标是允许任何用户读取数据,但只有一个用户(我自己)可以在使用单个电子邮件地址和密码登录后写入数据。 如果我用谷歌登录,我可以成功地读写数据库(规则设置为: auth!=null)。 如果使用电子邮件地址和密码登录,我

  • 如何使用firebase中的验证电子邮件验证使用电子邮件和密码登录的用户?这背后的逻辑是如何工作的,它在代码中会是什么样子? 解决方案/帮助:对于那些仍在寻找答案的人,我找到了这篇文章 堆栈溢出 帖子

  • 我已经创建了一个android应用程序,并使用firebase作为电子邮件注册和认证的手段。注册后,用户可以在数据库中存储库存项目。所以我的问题是,如何设置firebase身份验证规则,以便特定用户只能访问他们输入的数据。现在,每个人都可以读/写数据库。我不担心写的部分,因为电子邮件认证。提前感谢! 我的数据库是这样设置的:数据库

  • 我也不会得到一个错误,如果我登录我的电子邮件和密码没有验证电子邮件。 非常感谢你事先的帮助。

  • 我使用Firebase身份验证和电子邮件验证来实现用户注册,如下所示: 用户注册完成后,我可以在Firebase控制台内的Authentication菜单上看到电子邮件。然后我点击了电子邮件上的验证链接,在浏览器上得到了这样的消息: 返回false。所以电子邮件验证过程没有成功完成。这里怎么了? 我使用的是CompilesDKVersion29和Firebase-Auth19.3.2。

  • null /signup=>在我的数据库中注册用户,颁发令牌 /登录 /refresh_token null null null 我想要的是客户机V1的一致和兼容API。APIV1的任何现有客户端(应用程序)都应该能够向V1/Signupendpoint发送请求,并以与V2客户端相同的状态完成:在Firebase中创建用户帐户