如何检查电子邮件是否在客户端的Firebase中经过验证?

时间:2020-08-20 14:23:55

标签: javascript firebase-authentication

我要检查用户登录时是否已验证其电子邮件地址。似乎我必须在登录后执行此操作。还有更好的方法吗?

this.authService
  .login(this.email, this.password)
  .then(res => {
    if(!res.user.emailVerified}) {
         // Log out again!
    } else {
        // redirect to next page
    } 
  });   

2 个答案:

答案 0 :(得分:1)

您当前的代码意味着仅当用户显式签入时才运行检查。如果您要这样做,则此代码将实现该操作。


但是,在许多应用程序中,用户仅一次/很少地明确登录,然后无论何时重新启动,应用程序都会恢复其身份验证状态。实际上,Firebase身份验证是在幕后进行的:先保留身份验证状态,然后在应用程序重新启动时还原它。

要获取此流程,您将需要使用身份验证状态侦听器,如getting the currently signed in user上的文档中所示。

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // No user is signed in.
  }
});

如果您只是在emailVerified属性更新后退出用户接听,我会这样做,因为这只是让他们感到烦恼反复输入密码。相反,您还可以通过在代码中调用user.reload()来强制刷新其个人资料。

答案 1 :(得分:1)

您希望从“ onAuthStateChanged”获取用户身份,然后检查emailVerified参数以执行逻辑。

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    if(user.emailVerified){
         // proceed with your logic 
    }
  } else {
    // No user is signed in.
  }
});