【问题标题】:Firebase authentication: How to deal with users using email addresses they don't own?Firebase 身份验证:如何处理使用不属于他们的电子邮件地址的用户?
【发布时间】:2018-07-10 19:05:31
【问题描述】:

场景:

  • Bob 使用不属于他的电子邮件地址 alice@example.com 创建了一个 Firebase 帐户(无论是意外还是恶意)。

  • Bob 创建了几个私有 Firestore 记录(例如用户 cmets/消息),这些记录链接到他的用户 ID,只有 Bob 应该能够读取和写入。

  • Alice 尝试注册并发现她的电子邮件 alice@example.com 已被占用。我们如何在不让 Alice 访问 Bob 的 Firestore 记录且 Bob 无法访问她将继续创建的记录的情况下为 Alice 提供一个链接到她的电子邮件地址的用户帐户?

一些想法:

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

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

有没有更简单的方法?

【问题讨论】:

    标签: firebase firebase-authentication google-cloud-functions


    【解决方案1】:

    您可以使用 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

    来自他们的文档:

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

    ...

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

    【讨论】:

    • 谢谢,但您还没有说明如何解决上述 Bob/Alice 场景,其中 Bob 使用虚假电子邮件创建记录,这是问题的核心。
    • 对不起,我认为暗示的建议但我没有说清楚(我在写这篇文章时睡着了)是为了确保在用户有之前不能写入记录验证了他们的电子邮件地址。这绝对是在您的网站/应用中采取行动的障碍,但似乎它会给您带来预期的结果。
    猜你喜欢
    • 2017-10-03
    • 1970-01-01
    • 2017-12-13
    • 2016-11-03
    • 1970-01-01
    • 2021-03-11
    • 2020-01-15
    • 2019-05-01
    • 2022-07-28
    相关资源
    最近更新 更多