代码之家  ›  专栏  ›  技术社区  ›  fstr

FireBase身份验证:如何处理使用不属于用户的电子邮件地址的用户?

  •  0
  • fstr  · 技术社区  · 6 年前

    脚本:

    • Bob创建了一个FireBase帐户,邮箱地址为alice@example.com,他不拥有该帐户(无论是意外还是恶意)。

    • Bob创建了几个私人FireStore记录(例如用户评论/消息),这些记录链接到只有Bob才能读写的用户ID。

    • Alice尝试注册,发现她的电子邮件alice@example.com已被占用。我们如何给Alice一个链接到其电子邮件地址的用户帐户,而不让她访问Bob的FireStore记录,也不让Bob访问她将继续创建的记录?

    一些想法:

    • 您可以向Alice发送密码重置电子邮件,该电子邮件将注销Bob,但Alice将看到Bob在登录时创建的记录。

    • 您可以使用云功能1)删除Bob的(电子邮件未验证)用户或更改其电子邮件地址2)为Alice创建一个新用户,并设置电子邮件地址验证标志,然后发送密码重置电子邮件。

    有更简单的方法吗?

    1 回复  |  直到 6 年前
        1
  •  -1
  •   imjared    6 年前

    您可以使用一个(或多个!)帮助确定所有权的FireBase授权机制。

    1. 您可以使用第三方认证(FB、Google、Twitter、Github),这将有助于澄清电子邮件地址的所有权。(最简单,IMO)

    2. 您可以通过以下方式验证用户的电子邮件地址: firebase.auth().currentUser.sendEmailVerification() https://firebase.google.com/docs/auth/web/passing-state-in-email-actions

    3. 您可以使用电子邮件链接注册: https://firebase.google.com/docs/auth/web/email-link-auth

    从他们的文档中:

    通过电子邮件登录有许多好处:

    • 在验证用户是否是电子邮件地址的合法所有者的同时,验证用户身份的功能。