如何将onAuthStateChanged方法的true或false返回到单独文件中的变量

时间:2019-05-14 05:59:47

标签: javascript firebase firebase-authentication

每当用户登录或注销时,我都尝试从firebase方法onAuthStateChanged返回true或false到我的app.js文件中的变量。我有一个代表Firebase Auth对象的类设置,以及一个名为checkUserStatus()的方法,该方法调用onAuthStateChanged方法,如下所示。我验证了此方法是否正确验证了用户是否使用checkUserStatus方法中的控制台日志登录。到目前为止,app.js中的userStatus变量始终返回false(即使用户已登录),并且它仅记录一次-我假设是因为我仅在一次调用checkUserStatus方法app.js。我不知道如何构造代码,因此每次onAuthStateChanged触发时,我的app.js变量中都会得到一个真或假值。

     Class Auth {

          checkUserStatus(){
            let status = false;
            auth.onAuthStateChanged(user => {
                if (user){
                    console.log('logged in user:', user.email);
                    status = true;
                } else {
                    console.log('user is logged out');
                }
              });
              return status;
          }
        }

// beginning of app.js
let userStatus;

userStatus = auth.checkUserStatus();
console.log(userStatus);

1 个答案:

答案 0 :(得分:1)

您要尝试的不是听众的工作方式。如果您需要立即检查以查看用户是否已登录,只需查看auth.currentUser。它将为您提供当前登录的用户,如果没有,则为null。

您将传递给onAuthStateChanged的侦听器/观察者回调用于响应用户登录状态的更改,而不必使用auth.currentUser进行检查。它不适合您立即使用时进行立即检查。