Можно ли использовать файлы cookie сеанса в Firebase, чтобы оставаться в системе без пакета firebase-admin? - PullRequest
0 голосов
/ 27 мая 2020

Я использую firebase в своем следующем приложении. js для входа. Мой логин работает, но выходит из системы каждый раз, когда пользователь меняет путь внутри сайта. После входа в систему пользователь перенаправляется на главную страницу с помощью path = /, если пользователь меняет пути на path = / question / page, firebase немедленно выполняет выход из системы, но их сеанс Cook ie еще не истек. Я хотел бы использовать приготовление сеанса ie, чтобы пользователь оставался в системе до тех пор, пока не истечет срок его действия, независимо от того, где они перемещаются по сайту. Я не собираюсь использовать пакет firebase-admin, потому что он продолжает давать сбой на моем следующем сайте. js. Я могу использовать только обычный пакет firebase, который включает firebase.auth () вместе с пакетом js -cook ie. Вот код, который я использую, чтобы настроить мой cook ie:

componentDidMount() {
        let user = firebase_auth.currentUser;
        console.log("User: ", user);

        if (user) {
            this.setState({user_logged_in: true});
            return firebase_auth.currentUser.getIdToken(true).then(function (token) {
                Cookies.set('__session', token, {expires: 7});
            })
        }
        else {
            this.setState({user_logged_in: false})
        }
    }

Как я могу использовать сеанс cook ie, вызываемый в приведенном выше коде, чтобы мои пользователи не выходят из системы каждый раз, когда они переходят на новый путь?

Заранее спасибо за вашу помощь!

1 Ответ

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

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

Наиболее вероятная причина ваших проблем заключается в том, что Firebase все еще проверяет, действительно ли состояние аутентификации при доступе к firebase.auth().currentUser.

В этом случае решение - использовать прослушиватель состояния аутентификации :

componentDidMount() {
  firebase.auth().onAuthStateChanged(function(user) {
    if (user) {
      this.setState({user_logged_in: true});
      firebase_auth.currentUser.getIdToken(true).then(function (token) {
          Cookies.set('__session', token, {expires: 7});
      })
    } else {
      this.setState({user_logged_in: false})
    }
  });
}
...