Очистить постоянство Firebase Индексированная БД после выхода из системы - PullRequest
0 голосов
/ 30 апреля 2020

Я применяю аутентификацию для реагирования с использованием firebase.

У меня возникла проблема при выходе из системы и повторном входе с учетными данными другого пользователя. Firebase хранит токен доступа и информацию о пользователе первого пользователя.

Я пытался очистить IndexedDB вручную, но это не сработало.

Реализация входа в систему:

Firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)
  .then(() => Firebase.auth().signInWithEmailAndPassword(email, password).then((response) => {
    //impl
    return response;
  }).catch((error) => {
    throw error;
  }));

Выход из системы:

export async function logoutFirebase() {
  indexedDB.deleteDatabase('firebaseLocalStorageDb');
  return Firebase.auth().signOut();
}

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Если для параметра «Постоянство проверки подлинности» задано значение «Локальный», необходимо отключить сторонние файлы cookie для выхода.

Попробуйте выполнить следующее:

export function logoutFirebase() {
    return Firebase.auth().signOut()
        .then(() => {
            deleteAllCookies();
        })
        .catch(error => console.error("sign out failed", error));
}

function deleteAllCookies() {
    var cookies = document.cookie.split(";");

    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}
0 голосов
/ 30 апреля 2020

Оказывается, после переключения с сохраняющегося пользователя с firebase.auth.Auth.Persistence.SESSION на firebase.auth.Auth.Persistence.LOCAL мне пришлось удалить эта строка полностью:

indexedDB.deleteDatabase('firebaseLocalStorageDb');

Поскольку он мешает работе базы огня, удаляя IndexedDB.

Когда вы входите со вторым пользователем, аутентификация не сохраняется вообще. Вы должны либо принудительно обновить sh страницу входа, чтобы firebase снова инициализировала IndexedDB, либо полностью избавиться от этой строки, что, разумеется, является лучшим выбором.

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