场景:
Bob使用电子邮件地址alice@example.com创建了一个Firebase帐户,该帐户并非他(偶然或恶意)拥有。
Bob创建了多个私有Firestore记录(例如,用户评论/消息),这些记录链接到他的用户ID,只有Bob才能读取和写入该用户ID。
Alice尝试注册并发现她的电子邮件alice@example.com已被接收。我们如何为爱丽丝提供一个链接到她的电子邮件地址的用户帐户,而无需她访问鲍勃的Firestore记录,而又没有鲍勃访问她将继续创建的记录?
一些想法:
您可以向Alice发送密码重置电子邮件,该电子邮件将注销Bob,但是Alice将查看Bob登录时创建的记录。
您可以使用以下Cloud功能:1)删除Bob的(未经验证的电子邮件)用户或更改其电子邮件地址2)为Alice创建一个新用户,并设置了已验证的电子邮件地址标志并发送密码重置电子邮件。
有没有更简单的方法?
答案 0 :(得分:-1)
您可以使用Firebase的一种或多种身份验证机制来帮助确定所有权。
您可以使用第三方身份验证(FB,Google,Twitter,Github)来帮助阐明电子邮件地址的所有权。 (最简单的imo)
您可以通过firebase.auth().currentUser.sendEmailVerification()
https://firebase.google.com/docs/auth/web/passing-state-in-email-actions
您可以使用电子邮件链接进行注册:https://firebase.google.com/docs/auth/web/email-link-auth
来自他们的文档:
通过电子邮件登录有很多好处:
...
- 在验证用户身份的同时还可以验证用户是否是电子邮件地址的合法所有者。