用户名验证而不是电子邮件

vik*_*lla 19 firebase firebase-authentication

使用Firebase,我可以使用电子邮件地址注册和登录用户.但是,如果我希望该应用程序是基于用户名的.例如,您将使用"Bobzilla"而不是"Bob@mail.com"登录?

Firebase可以实现吗?

Fra*_*len 22

Firebase身份验证中没有内置的默认用户名+密码提供程序.但您可以使用Firebase文档中说明创建自己的自定义身份提供商.这需要在受信任的环境中运行的代码,您可以使用自己的服务器或Cloud Functions for Firebase.现在甚至在functions-samples repo中都有这样例子.


或者:您可以使用内置的电子邮件+密码提供程序,只需添加用户名后面的任何域.因此,一旦确定了用户名,请注册您的用户<username>@vikzillasapp.com.

请注意,如果忘记密码,用户将无法重置密码,因为Firebase会使用电子邮件地址发送密码重置电子邮件.

  • firebase真的需要通过用户名进行身份验证.不仅是电子邮件 (20认同)

far*_*ruk 5

您可以使用firebase 自定义 auth。自定义身份验证是一种用户可以使用自定义令牌登录应用程序的方法。

但是,您需要后端代码,以便在用户将用户名和密码发送到该后端时创建自定义令牌

幸运的是,现在有了firebase云功能,带有http事件,可以轻松解决您的问题。步骤是:

  1. 用户通过查询参数 (GET) 或请求正文 (POST) 将用户名和密码发送到云函数 url

  2. 云功能将检查用户名和密码是否有效(例如:来自实时数据库)

  3. 如果用户名和密码有效,云函数将使用 userId 创建自定义令牌(您需要保存 userId)。然后发送到响应体

  4. 然后客户端可以使用该 customToken 登录


Sco*_*t D 5

除了使用为用户分配电子邮件地址的方法外,在数据库中查找电子邮件地址可能是更好的选择。

一个例子是:

  1. 提示用户名使用用户名和密码登录
  2. 验证用户名是否存在于您的数据库中,并检索该帐户的相应电子邮件地址
  3. 将此电子邮件地址无缝传递到登录过程

  • 有趣的主意。我认为问题在于您必须在数据库中打开所有这些电子邮件。 (2认同)