Firebase登录后注销用户

时间:2019-02-24 11:03:48

标签: javascript firebase authentication web firebase-authentication

我的问题是我的Firebase托管网站具有/account路由,该路由会动态加载内容页面,具体取决于用户是否登录。 为了检测用户状态,我使用了Firebase Auth的onAuthStateChange回调:

firebase.auth().onAuthStateChanged((user) => {
    console.log("authstate changed:"+user);
    let pagereq = new XMLHttpRequest();
    if (user) {
        console.log(user.email);
        user.getIdTokenResult(true).then((idtokenres) => {
            if(idtokenres.claims.admin){
                console.log("user is admin");
            }
        });
        pagereq.open("GET","./account-management/management.html",true);
        logout.addEventListener("click",handleLogout());
    } else {
        logout.parentNode.removeChild(logout);
        pagereq.open("GET","./account-management/login/login-page.html",true);
    }
}

用户登录后,将显示动态加载的登录表单,并启用使用电子邮件和密码的登录。用户现在输入他的凭据并点击“登录”。内容区域由于回调而重新加载,并显示一个控制台页面。 问题来了。用户登录时,会两次调用onAuthStateChanged:首先使用精确的user-Object成功,然后使用user = null成功。 控制台页面本身加载后,控制台页面会动态加载脚本。在脚本中,还有一个onAuthStateChanged函数,通常会调用该函数。在这里,回调仅被调用一次,user也为空。 为什么会这样,如何解决此问题? 我无法检测到user-Object在第二次调用时为null并在动态加载的脚本中也为null的原因。

1 个答案:

答案 0 :(得分:0)

尝试删除()上的handleLogout 就像logout.addEventListener(‘click’, handleLogout)

相关问题