Firebase выходит из системы после входа в систему - PullRequest
0 голосов
/ 24 февраля 2019

У меня проблема с тем, что на моем веб-сайте Firebase есть маршрут /account, который динамически загружает контентную страницу, в зависимости от того, вошел ли пользователь в систему или нет.Для определения состояния пользователей я использую обратный вызов onAuthStateChange от firebase auth:

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 -объектом, а второй - с user = null.Страница консоли динамически загружает скрипт после загрузки самой страницы консоли.В скрипте также есть функция onAuthStateChanged, которая будет вызываться нормально.Здесь обратный вызов вызывается только один раз, и user также является нулевым. Почему и как я могу обойти эту проблему? Не удается определить, почему user -Object нулевой при втором вызове, а также нулевой в динамически загружаемом скрипте.

1 Ответ

0 голосов
/ 24 февраля 2019

Попробуйте удалить () на вашем handleLogout Так что это будет похоже на logout.addEventListener(‘click’, handleLogout)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...