Где разместить код для установки сохраняемости состояния аутентификации Firebase в Vue. js? - PullRequest
2 голосов
/ 29 мая 2020

Обзор

Я создаю веб-приложение на Quasar / Vue. js и Firebase, которое должно аутентифицировать пользователей.

Чего я пытаюсь достичь

Довольно распространенная функция - сохранять пользователей в журналах даже после того, как они закрывают браузер / вкладку.

Возможные решения

Я знаю, что могу использовать localStorage или cookies , чтобы установить состояние авторизации пользователя. Однако я хочу разрешить Firebase auth сделать это за меня (если он может это сделать).

Я проверил документы по этому поводу - https://firebase.google.com/docs/auth/web/auth-state-persistence, и они хороши, кроме Я не могу понять, где разместить этот фрагмент кода, упомянутый там:

firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)
  .then(function() {
    // New sign-in will be persisted with session persistence.
    return firebase.auth().signInWithEmailAndPassword(email, password);
  })
  .catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
  });

Я не уверен, где разместить его из следующих мест:

  • с onAuthStatechanged слушатель?
  • в приложении. vue (root Vue) экземпляр?
  • где-то еще?

Был бы рад, если бы кто-нибудь может помочь. Спасибо.

1 Ответ

2 голосов
/ 29 мая 2020

Я бы сделал это везде, где есть firebase.initializeApp(). Например,

firebase.initializeApp({
  // config goes here
});

export const auth = firebase.auth()

auth.setPersistence(firebase.auth.Auth.Persistence.LOCAL)

Обратите внимание, что LOCAL уже используется по умолчанию в веб-приложениях.

Вам действительно не нужно ждать этого обещания. Из docs

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

...