繁体   English   中英

如何在客户端验证email是否在firebase中验证?

[英]How to check if email is verified in firebase on client side?

我想检查用户在登录时是否验证了他的 email 地址。看来我必须在登录后执行此操作。 有更好的方法吗?

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

您当前的代码意味着检查仅在用户明确签入时运行。如果这是您想要的,则此代码将实现它。


然而,在许多应用程序中,用户只显式登录一次/很少,然后应用程序会在每次重新启动时恢复其身份验证 state。 Firebase 身份验证实际上在幕后执行此操作:保留身份验证 state,然后在应用程序重新启动时恢复它。

要选择此流程,您需要使用身份验证 state 侦听器,如获取当前登录用户的文档中所示。

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

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

您可能希望从“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.
  }
});

暂无
暂无

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

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