用户是否需要创建一个帐户来读/写Firebase

用户是否需要创建一个帐户来读/写Firebase,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我正在制作一个以Firebase为数据库的应用程序。应用程序不需要用户创建一个帐户来使用它,但我希望用户能够将数据读/写到数据库中(所以他们可能必须创建一个帐户?) 我是否有让用户创建帐户以使用Firebase 我的问题是,我的安全规则是读/写的,每个人都可以读/写(我知道这是错误的,但我如何更改它们,而不需要用户创建帐户?)也许这就是问题所在。拥有每个用户数据存储安全性的唯一真正方法是使用用户登录,和写来保护数据库,这样每个用户只能访问自己的数据。对于实时数据库,没有安全的替代方案。最好让他们

我正在制作一个以Firebase为数据库的应用程序。应用程序不需要用户创建一个帐户来使用它,但我希望用户能够将数据读/写到数据库中(所以他们可能必须创建一个帐户?)

我是否有让用户创建帐户以使用Firebase


我的问题是,我的安全规则是读/写的,每个人都可以读/写(我知道这是错误的,但我如何更改它们,而不需要用户创建帐户?)也许这就是问题所在。

拥有每个用户数据存储安全性的唯一真正方法是使用用户登录,和写来保护数据库,这样每个用户只能访问自己的数据。对于实时数据库,没有安全的替代方案。

最好让他们创建一个帐户 尽管:
  • 它可以是非真实的电子邮件地址,也可以是
  • 还有匿名身份验证
听起来你需要应用程序记住该用户的特定数据,这样当他们返回应用程序时,仍然是他们的数据(而不是其他人的数据)被访问

为了实现这一点,我们需要将每个人的数据存储在Firebase中的不同位置。传统上,这是让他们登录到某种系统,最方便的是Firebase本身,然后将数据存储在由其用户Id定义的数据库分支中

无需登录,您只需向用户请求标识符,如“Bob”或“Carol”,然后将其数据存储在其标识符下。因此,Firebase数据库将具有以下结构

users/Bob/highScore: 3000
users/Bob/level: 7
users/Carol/highScore: 5050
users/Carol/level: 9
然而,这并不安全,因为没有任何东西可以阻止Carol来到应用程序并说她是“Bob”。您为尝试识别用户而执行的任何此类客户端活动都不是真正的身份验证(Firebase认为),因为所有客户端活动都相对容易伪造

Firebase身份验证 标准解决方案是使用Firebase对每个用户进行身份验证(请参阅Firebase身份验证),并为您的应用程序提供唯一且已知(Firebase)正确的用户Id(如“8769dsg6f8g7698769876sdgs9”)

Firebase安全规则 然后,可以使用锁定数据库,以便只有用户8769dsg6f8g7698769876sdgs9可以写入数据库的任何
用户/8769dsg6f8g7698769876sdgs9/…
部分

如果您不使用Firebase对用户进行身份验证,Firebase会将该用户视为未经身份验证的用户,并且您将无法将每个用户限制在其自己的数据库部分。要么你让它完全开放(黑客等!),要么用户将无法访问其上自己的个人数据

他们可以使用伪造的电子邮件地址和密码 如果你担心他们不想透露真实的电子邮件地址,你可以要求他们填写任何电子邮件地址,例如。mickeyMouse49857430679304@hotmail.com,并设置密码。您的应用程序没有义务通过该电子邮件地址与他们联系或验证电子邮件地址是否正确

无论何时他们返回应用程序,或在其他设备上访问应用程序,他们都需要记住伪造的电子邮件地址和密码

当然,如果他们丢失了密码,就无法重置密码

匿名身份验证,但有丢失访问权限的风险 Firebase的传奇人物弗兰克·冯·帕夫伦(Frank von Puffelen)本人在下面的评论中添加了关于的评论。据我所知,这避免了他们必须编造一个虚假的电子邮件地址


我认为这样做的缺点是,如果他们丢失了本地web存储(例如,如果他们手动擦除或移动到另一个设备),他们将无法重新访问同一个帐户,除非他们事先计划在匿名帐户中添加电子邮件。

啊,好的,谢谢!因此,如果用户不想使用他们的实际电子邮件地址创建帐户,我可以通过匿名身份验证来创建帐户,然后以某种方式将匿名身份验证保存到手机上,这样当他们打开应用程序时,它只允许他们查看自己的信息?然后该自动满足Firebase规则,仅适用于“已验证用户”?不,因为Firebase意味着由Firebase验证。如果它只是本地存储的东西,它就不是真正有效的,因为这相对容易被欺骗。客户端上Javascript中发生的任何事情都很容易被黑客攻击。好吧,我只需要让用户创建一个帐户,然后按照上面所说的做,谢谢你的帮助!(干杯。如果你认为他们会羞于使用真实的电子邮件地址,请参阅我刚才添加的关于使用假电子邮件地址的额外内容。)谢谢你提供的额外信息,我想我可以将他们的假电子邮件保存为用户默认值,这样他们就可以自动登录。(这是一个iOS应用程序,我知道如何在那里保存信息)。再次感谢你,非常感谢!通过Firebase添加“匿名身份验证”的最佳方式是什么?这样,他们就不必使用自己的电子邮件地址创建实际的帐户,但它仍然满足Firebase安全规则?当然,但该帐户仅限于创建帐户的设备。而且它很脆弱,因为如果卸载应用程序、清空存储或重置设备,帐户将消失。匿名帐户是让用户开始使用的一种低摩擦方式,目的是最终将其升级为完整帐户。