繁体   English   中英

Firebase:标准用户注册/激活工作流程

[英]Firebase: Standard User Registration/Activation Workflow

我需要使用 Firebase 实施标准的用户注册/激活工作流程。 似乎没有明显的方法来实现这一点。 当我说“标准”时,我指的是大多数电子邮件/密码帐户的工作方式——不一定特定于 Firebase。 我相信你对此很熟悉。 这是工作流程:

  • 用户在经过一些验证的表单上输入用户名/密码并提交详细信息
  • 后端在数据库中创建用户记录,但帐户保持停用状态(即用户无法验证 - 激活标志设置为 false)
  • 后端向用户发送一封电子邮件,其中包含激活帐户的链接
  • 用户单击电子邮件中的链接触发激活。 这可能是某种描述的 Web API。
  • 此时,用户记录的 activated 标志变为 true,用户现在可以进行身份验证
  • 该链接可能还有一个深层链接,可以打开应用程序或导航到网页
  • 用户现在可以登录应用程序

我如何配置 Firebase 来完成这一切?

目前,该应用程序允许用户注册。 我正在使用 Flutterfire SDK。 我调用createUserWithEmailAndPassword ,它在 Firebase 中成功创建了用户。 但是,用户已经激活。 在帐户被激活之前,用户在 firebase 中应该处于“禁用”状态。 首次创建帐户时,我找不到任何默认用户禁用的设置。

我还设法让 Firebase 通过调用sendSignInLinkToEmail发送激活电子邮件,但此调用实际上是为电子邮件身份验证而设计的 - 而不是电子邮件激活。 打开链接应该可以激活帐户,但我还不知道如何操作。 文档使它听起来像是可能的。 也许,Flutterfire SDK 缺少这个? 我不想让人们在没有密码的情况下登录。 我只想使用此电话发送电子邮件。

我在这里错过了什么? 这是 Firebase 的非标准行为吗? 如果是这样,为什么? 如果允许用户使用未激活的电子邮件地址的应用程序,他们可以冒充其他人。 我们至少需要确认他们是他们声称拥有的电子邮件地址的保管人。

其他 Firebase 人员不担心这个吗?

最后,我知道我可以通过在 Firebase 中为用户创建一个集合并在其中放置一个“已激活”标志来实现这一点。 但是,如果我这样做,我必须编写一个接受链接的云函数,然后根据收到的链接更新集合中的用户。 但我认为这在 Firebase 中是自动的。 如果 Firebase 没有这个内置功能,我必须将所有安全放在首位,以阻止用户在尚未激活其帐户时进行身份验证。

这是一个非常合理的担忧。 我想解决这个问题的方法是在应用程序启动时检查登录用户是否经过验证。 从 Firebase Auth 返回的用户对象有一个 emailVerified 标志。 查看此页面了解更多详情。

使用此标志,您可以选择显示不同的屏幕或弹出窗口,其中包含一个按钮,用于向注册的电子邮件地址发送验证链接。 在用户验证此地址之前,您可以根据需要限制对某些应用程序屏幕的访问。

请注意,对于使用联合登录提供商(如 Google 登录和 Apple 登录)进行的注册,我尚未检查此 emailVerified 标志是否为真。 你可能想检查一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM