【问题标题】:Is it possible to access Firebase data before creating a new user? (Swift)是否可以在创建新用户之前访问 Firebase 数据? (迅速)
【发布时间】:2017-05-16 19:15:51
【问题描述】:

在创建新用户之前,我想检查 Firebase 以查看数据库中是否已存在该用户名。我想在用户完成编辑用户名文本字段后立即执行此操作(我的表单的其余部分将不完整)。我尝试访问 Firebase 数据库,但收到警告“/Users 处的侦听器失败:permission_denied”。据我了解,为了从 Firebase DB 读/写,用户必须经过身份验证,显然注册的用户在注册之前没有经过身份验证。在运行createUserWithEmail:password:completion:方法之前有什么方法可以访问数据库吗?

【问题讨论】:

  • 更大的问题;创建 Firebase 帐户时使用的电子邮件地址是否与 用户名 相同?如果是,那么当您尝试创建用户时,Firebase 会自动告诉您该用户名是否已经存在。如果没有,为什么不呢?
  • 我宁愿在用户完成编辑用户名/电子邮件文本字段后立即检查用户名/电子邮件的唯一性,而不是用户必须完成整个表单,提交然后告诉他们选择一个新的用户名/电子邮件(假设它是重复的)。但是,为简单起见,我可能会选择这条路线。谢谢@Jay

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


【解决方案1】:

为了清楚起见,让我先说一下,我确实建议您针对您的用例执行此操作。但一般来说,您可以通过将路径的安全规则设置为 true 来允许未经身份验证的用户访问数据库的某些部分:

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

你会想要做这样的事情,因为你不想让公众访问每个人的用户名。

相反,我建议使用 Cloud Functions for Firebase。您可以创建一个在用户选择用户名时触发的云函数,可能是通过在数据库中创建一个临时路径并使用数据库触发器。现在,如果您不熟悉 Cloud Functions 或 Node.js,将会有很多新信息需要提前学习,但您会发现 Functions 的用例很多,因此值得学习。

这里有一些资源可供查看:

Get Started

Cloud Functions Database Triggers

Cloud Functions Documentation

【讨论】:

  • 感谢@JenPerson 的彻底回复!我打算在问题中包含“安全”,所以我会接受你的第二个建议。
猜你喜欢
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2018-06-24
相关资源
最近更新 更多