Firebase:在验证时禁用帐户或在启用后发送验证

Posted

技术标签:

【中文标题】Firebase:在验证时禁用帐户或在启用后发送验证【英文标题】:Firebase: disable account on verification or send verification after enabling 【发布时间】:2021-07-28 05:25:25 【问题描述】:

在我正在开发的 Flutter + Firebase 应用程序中,用户创建一个帐户(使用 Firebase 身份验证)并收到一封验证电子邮件。但是,此应用程序仅适用于选定数量的人,因此我将其实现为默认禁用新用户并需要由应用内管理员启用。事实证明,如果您的帐户被禁用,验证链接将不起作用,因此新用户需要等待管理员启用他们的帐户才能进行验证。这并不理想,所需的工作流程可能是以下之一:

用户创建帐户 > 帐户自动禁用 > 管理员启用帐户 > 发送验证电子邮件(首选) 用户创建帐户 > 发送验证电子邮件 > 验证时禁用帐户 > 管理员启用帐户 > 用户收到帐户已启用的通知(由于最后一步,不太可取)

选项 1 需要在验证帐户后通知某些功能,以便可以禁用它,我找不到任何关于这是否可能的文档。选项 2 需要以一些奇怪的方式接管 Firebase Auth 发送的验证电子邮件。我的问题是:选项1有可能吗?如果没有,如何处理选项 2?

【问题讨论】:

【参考方案1】:

要通过客户端 SDK 或 REST API 验证帐户的电子邮件地址,用户需要登录该帐户。如果您在 Firebase 身份验证中禁用某个帐户,用户将无法登录该帐户进行验证。

您的选择是:

    要么自己处理整个流程,然后使用 Admin SDK 验证并启用帐户。文档中没有这方面的分步指南。

    或者不要在 Firebase 身份验证中禁用该帐户,而是只允许用户在验证其帐户后使用该应用并访问数据。

第二个选项是迄今为止最常见的,因为您基本上只是将流程的身份验证部分(用户证明其凭据)与授权部分(用户获得应用程序及其数据的访问权限)分开。

【讨论】:

感谢您的澄清!我们可能会选择第一种方法,因为第二种方法的问题是即使经过验证的用户也不应该被自动授予访问权限。我想这不是一种非常常见的方法,因为通常您希望尽可能多的用户并且不想仔细检查每个帐户。很高兴知道通过编写我们自己的流程仍然可以实现! 很高兴听到这对您有用。 ? 我确实想澄清一些你似乎仍然将身份验证(证明你是谁)与授权(被授予访问某事的权限)混淆的事情。仅授予经过验证的用户访问权限非常常见,但通常在应用程序代码和数据库的安全规则中完成。即使在自定义流程中,您也将在某个地方做同样的事情:根据提供的凭据,您将验证他们是他们声称的身份,但无权访问您的应用程序.

以上是关于Firebase:在验证时禁用帐户或在启用后发送验证的主要内容,如果未能解决你的问题,请参考以下文章

在 IIS 中禁用匿名身份验证后 WebServiceHost 无法正常工作

如何在启用电话身份验证的情况下导出 Firebase 用户帐户

如何首先在Firebase中发送电子邮件验证,然后创建帐户?

Firebase 电子邮件验证无法正常工作

通过 Flutter for Firebase 重新发送验证

我的帐户未启用到 Firebase 的数字迁移