Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尚未通过身份验证的用户的Firebase安全规则_Firebase_Firebase Security - Fatal编程技术网

尚未通过身份验证的用户的Firebase安全规则

尚未通过身份验证的用户的Firebase安全规则,firebase,firebase-security,Firebase,Firebase Security,我正在努力解决一个基本的Firebase安全概念。例如,假设我有两个(最终)谷歌认证(使用OAUTH)的web应用程序用户,该应用程序使用Firebase作为其数据存储;用户是alice@gmail.com和bob@gmail.com。我知道他们最终会登录,当他们登录时,我将使用GoogleOAuth工具向firebase验证他们的身份。两人都还没有使用我的Firebase应用程序。此外,当他们登录时,我相信谷歌的OAUTH服务正在验证声称是bob@gmail.com事实上是鲍勃,至少就他知道鲍

我正在努力解决一个基本的Firebase安全概念。例如,假设我有两个(最终)谷歌认证(使用OAUTH)的web应用程序用户,该应用程序使用Firebase作为其数据存储;用户是alice@gmail.combob@gmail.com。我知道他们最终会登录,当他们登录时,我将使用GoogleOAuth工具向firebase验证他们的身份。两人都还没有使用我的Firebase应用程序。此外,当他们登录时,我相信谷歌的OAUTH服务正在验证声称是bob@gmail.com事实上是鲍勃,至少就他知道鲍勃在谷歌身份识别服务中的密码而言

假设我想创建一个具有三个节点的firebase文档集合,这样alice和bob都可以读取节点1中的文档(但其他经过身份验证或未经身份验证的用户不能);所有用户,包括未经验证的用户,都可以读取节点2中的文档,但不能写入文档;但只是bob@gmail.com可以在任何节点中编写任何文档(Bob是“超级用户”。)

但是,当我在Firebase和其他网站上查看各种示例时,我就陷入了困境:我想在alice或bob首次登录到我的Firebase备份应用程序之前设置这些Firebase规则。所以,虽然我最初知道他们的gmail地址,但我还不知道他们唯一的用户ID。我遇到的所有示例似乎都取决于我事先知道其UID的值这一事实(例如答案中的示例,其中指定了john和mary的twitter UID,例如john's is twitter:2544215)

如何在这些用户首次登录之前定义Firebase的安全规则;也就是说,如果我(还)不知道呢bob@gmail.com你的UID是2544215吗


我希望有人能展示一个安全规则示例的片段。

使用并关联他们的电子邮件地址?但是,在他们真正使用电子邮件+密码进行身份验证之前,你所做的任何事情都会从本质上降低安全性“嘿,bob@gmail.com:我想授予您在我的firebase数据库中成为超级用户的权限;但是,在您首次登录之前,我无法为此设置规则,因此我可以拦截您的神奇UID号码并将其输入我的规则集中。“我缺少什么概念?基于用户的安全性基于了解用户的身份。在他们登录之前,您如何知道?”bob@gmail.com“真的”bob@gmail.com"? 他们只是在你的应用程序的输入框中输入了他们的电子邮件地址吗?你误解了我的问题。让我这样解释:如果我对Firebase使用“注册用户”身份验证方法(电子邮件/密码),我可以创建一个新用户,比如samson@gmail.com. Firebase此时为我生成一个用户UID。我可以在安全规则中使用该UID,即使samson从未使用过我的应用程序。但是,如果我打算使用OAUTH和Google进行身份验证,则在用户至少登录一次之前,我无法知道用户UID。那么,在第二种情况下,我如何制定安全规则呢?那么,“如果某个用户还没有登录到我的应用程序,而我只知道他们的电子邮件地址,我如何为该用户编写安全规则呢?”我会将您的问题更新为简短的问题,并显示添加一些您已经完成的操作的信息。例如:您有数据结构吗?