Выйти и перезагрузить страницу Автоматический вход - PullRequest
0 голосов
/ 26 мая 2018

На моем многостраничном HTML-сайте (размещенном на Firebase) у меня есть кнопка входа / выхода.Всякий раз, когда я нажимаю кнопку выхода, кнопка выхода становится кнопкой входа, благодаря моему CSS, и консоль сообщает «пользователь не вошел в систему».

Однако, когда я перезагружаю страницу или перехожу на другую страницуодин (Ctrl + R и Ctrl + Shift + R не имеют значения), кнопка выхода появляется снова, и консоль сообщает «пользователь вошел в систему», как если бы сервер не помнил, что пользователь должен выйти из системы, а не автоматическивход после перезагрузки страницы.

Вот что я использую для входа. Обратите внимание, что setButtons() - это мой код для изменения CSS, чтобы показать, какая кнопка мне нужна.gLogin() вызывается при нажатии кнопки «Вход», а gLogout вызывается при нажатии кнопки «Выход».

var signedIn;
var curUser = null;

function updateUser(user)
{
    if (user) {
        curUser = user;
        signedIn = true;
        console.log("User is logged in");
        // User is signed in.
    } else {
        curUser = null;
        signedIn = false;
        console.log("User is not logged in");
        // No user is signed in.
    }
    setButtons(signedIn);
}

firebase.auth().onAuthStateChanged(updateUser);

function gLogin() {
    firebase.auth().signInWithPopup(gProvider).then(function (result) {       
    var token = result.credential.accessToken; 
    var user = result.user;
    signedIn = true;
    location.reload(true);
  }).catch(function (error) {
      console.log(error);
  });
}

function gLogout() {
    firebase.auth().signOut().then(function () {
        signedIn = false;
        updateUser(null);
    }).catch(function (error) {
        console.log(error);
    });
}

1 Ответ

0 голосов
/ 27 мая 2018

Я понял: по-видимому, проблема заключалась в том, что я не установил состояние персистентности аутентификации по умолчанию.Из того, что я понимаю, это означало, что настойчивость имела бы недокументированное поведение.Вот что я добавил в каждый из скриптов моих страниц:

firebase.auth()
.setPersistence(firebase.auth.Auth.Persistence.SESSION)
.then(function() {
    console.log("Persistence set");
}).catch(function(error) {
    console.log(error);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...