Запись доступа к базе данных реального времени потеряна после переключения страницы - PullRequest
0 голосов
/ 30 мая 2020

У меня небольшая проблема при записи в БД с использованием аутентификации пользователя firebase.

На заданной странице, скажем, myPage.html; Мне нужно получить доступ к базе данных в реальном времени, чтобы выполнить запись данных. У меня есть код для проверки правильности входа в систему:

  firebase.auth().onAuthStateChanged(function(user) {
    if (user) {
      // User is signed in.
      ... some useful code ...
      // OK to perform DB writes.
    } else {
      // User is signed out.
      ... Get-Out-Of-Here ...
      // NG to perform DB writes.
    }
  });

До этого момента все в порядке, я могу писать в БД, как и ожидалось, если я вошел в систему.

Затем мне нужно выполнить еще несколько записей с другой страницы (myOtherPage. html).

В myPage есть ссылка. html ведет на myOtherPage. html.

<a href='myOtherPage.html'>Go To The Other Page</a>

Вот и проблема:

С myOtherPage. html, я больше не могу выполнять запись данных в БД.

Похоже, моя аутентификация просто исчезла.

Что мне делать, чтобы сохранить доступ к БД даже при смене страницы?

1 Ответ

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

Это может быть проблемой, если вы не используете Authentication State Persistence, о котором вы можете прочитать здесь

Некоторые фрагменты кода из официального документа:

firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
  .then(function() {
    // Existing and future Auth states are now persisted in the current
    // session only. Closing the window would clear any existing state even
    // if a user forgets to sign out.
    // ...
    // 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;
  });

Доступны следующие типы состояний:

states availabe

Использование состояния «ЛОКАЛЬНОЕ» должно соответствовать вашим потребностям, и ваш пользователь должен сам выйти из системы. Это означает, что он останется в системе и сможет получить доступ к вашей базе данных, пока не выйдет из системы.

PS: По умолчанию для веб-браузера и приложений React Native используется локальный режим (при условии, что браузер поддерживает этот механизм хранения, например . Сторонние файлы cookie / данные включены), тогда как для Node.js серверных приложений их нет.

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