当前位置: 首页 > 知识库问答 >
问题:

Firebase电子邮件/密码验证-如何要求电子邮件验证?

孟华晖
2023-03-14

每当我在Firebase中使用电子邮件/密码身份验证提供程序时,提供程序都会在成功注册时发送一个无记名令牌,即使emailVeratedfalse。是否有一种开箱即用的方法将电子邮件/密码身份验证提供程序配置为在用户验证其电子邮件地址之前不发送无记名令牌(并返回403错误)?

请注意,我知道如何创建用户、登录用户、发送验证电子邮件等。。。使用firebase v9。x通过firebase/auth中的方法创建用户(使用EmailandPassword)、登录(使用EmailandPassword)、注销(signOut)、发送电子邮件验证(sendEmailVerification)。我只是想问,是否有一种方法可以设置提供者的行为,而不必为此编写自己的处理函数。无论何时需要电子邮件验证,我都希望这样做就像Cognito那样。

共有2个答案

潘胤
2023-03-14

创建帐户后,createUserWithEmailAndPassword()将立即登录用户。此外,即使用户的电子邮件未经验证,也没有任何方法阻止其登录,但您可以实际检查电子邮件是否在安全规则中得到验证,或者使用Admin SDK阻止未验证电子邮件的用户访问您的资源。您可以在Firestore中使用此规则:

allow read, write: if request.auth.token.email_verified == true;

一种解决方法是使用云功能和管理SDK创建用户,这些SDK不会登录用户,但会注意用户可以登录。

如果您想阻止登录,除非电子邮件经过严格验证,那么您可以在创建帐户后立即禁用该帐户。现在您可能无法使用要求用户首先登录的sendEmailVerification(),您可以创建自己的电子邮件验证解决方案。该过程可能类似于:

  1. 在云功能中创建用户并禁用帐户

此外,用户仍然可以使用REST API创建帐户,但您可以禁用注册,以便仅通过云功能创建用户,该功能将立即禁用用户。

李森
2023-03-14

在登录Firebase身份验证之前,无法要求验证用户的电子邮件地址。

您可以获得的最接近的方法是使用电子邮件链接登录,它将登录和验证用户的电子邮件地址结合在一个操作中。

但这就是您通常希望在应用程序代码中实现它的方式:

  1. 用户输入其凭据
  2. 您可以使用这些凭据将他们登录到Firebase
  3. 您检查他们的电子邮件地址是否已验证
  4. 如果没有,请阻止他们进一步使用该应用程序,并(可选)向他们发送验证电子邮件

与数据访问相同:如果您有自定义后端代码,则可以检查是否在ID令牌中以及Firebase的服务器端安全规则中验证了电子邮件地址。

 类似资料:
  • 电子邮件验证+电子邮件/密码验证的使用不适用于在用户开始使用服务之前绝对需要电子邮件验证的服务。 让我用Google sign in First的一个例子来解释。 首先,用户登录他们的Google帐户(比如电子邮件是),并授权您的应用程序。然后使用通过它接收到的令牌创建一个凭据,并与Firebase交换这些令牌以将用户登录到Firebase。用户需要存在于Firebase中,您才能使用Fireba

  • 我有一个关于firebase电子邮件验证工作的问题。 案例: 我的用户已登录我的网站(使用设备A)。 他们使用其他浏览器或设备(设备B)创建另一个帐户,但他们使用他已登录的浏览器和设备(设备A)打开电子邮件验证链接。 已经登录的用户(在设备A中)发生了什么?firebase是将它们签出还是只是验证新的电子邮件,但仍然与当前用户签入?

  • 我是Firebase的新手。我需要一种在注册过程中验证电子邮件地址的方法。未经验证,用户不应该自动登录。我可以添加什么代码来检查电子邮件是否经过验证。如果是,用户可以登录。如果不是,他们需要首先登录。请参阅下面的代码

  • 我的电子邮件验证有问题。我的错误是“用户为空”,因此它不会发送验证电子邮件,但会在控制台和My console.firebase.google中显示登录uid。com项目显示已注册的电子邮件。我应该更改什么,以便发送电子邮件,并且在用户验证其电子邮件之前不允许访问?我读过文件,但想不出来。提前谢谢你。

  • 除了教练通知每个成员他们各自的密码之外,还有人能想出解决这个问题的方法吗?

  • 对于Firebase上托管的Web应用程序,我希望通过电子邮件向新用户发送验证链接来验证他们。我浏览了文档,创建了自定义电子邮件操作处理程序,配置了自定义域,密码验证工作正常。 那么,如何触发密码验证?如何获取oobCode和apiKey参数?我正在注册一个新用户罚款和什么都没有发生在我的身份监听器页面?