Firebase在APPDelegate
。
规则中的读取设置为.true
。
但是,在我让用户登录我的应用程序之前,我正在检查用户名,在我的Firebase数据库的单独表中。它将完全跳过观察区块,直到我强行登录到我已经创建的另一个帐户。然后当我重新构建应用程序时,不再跳过该块并实际访问该表。
我如何"醒来" Firebase在新设备上运行应用程序时,我可以检查用户名,而无需事先使用现有帐户登录应用程序吗?
答案 0 :(得分:2)
您可能想重新考虑应用的结构。
如果在进行身份验证之前检查用户名,则表示该节点已公开,任何人都可以获取所有用户名的副本。显然,这本身可能不是一个大问题,但如果您的用户决定使用电子邮件,那么抓住该列表的人就会有一个即时列表,他们可以发送垃圾邮件。
将任何观察者添加到节点时,只要添加观察者,就会读取该节点一次。当应用程序启动时,您可以使用.childAdded迭代现有节点以预加载某些数据,例如购物清单,然后在此之后添加的任何新杂货将通过活动发送到您的应用程序。
同样,.value事件将在整个节点中读取,并为任何未来事件附加一个观察者。
用户名问题很棘手,而且你现在的做法现在可能会让你长期遇到麻烦。
更好的方法是利用Firebase Authentication.
Firebase会为您处理所有用户名和密码。它非常强大和灵活,可以避免您遇到的问题。它会告诉您是否存在用户名,它将执行密码重置电子邮件,您可以从Firebase控制台管理用户。这是要走的路。
如果您想添加用户名功能,可以通过向/ users节点添加用户名或昵称节点轻松完成
/users
uid_0
email: "bill@email.com"
username: "bill_the_cat"
uid_1
email: "clark@email.com"
username: "superman"
一旦用户使用Firebase身份验证进行身份验证,只要用户信息需要在应用中显示,只需查找您需要的uid(uid_1)并获取用户名节点(超人)进行显示。< / p>