Почему вы хотите выйти после создания сеанса в Firebase? - PullRequest
0 голосов
/ 27 апреля 2020

Я смотрю на документы Firebase Auth здесь и, в частности, этот пример кода для клиентского кода для создания сеанса:

firebase.auth().signInWithEmailAndPassword('user@example.com', 'password').then(user => {
  // Get the user's ID token as it is needed to exchange for a session cookie.
  return user.getIdToken().then(idToken = > {
    // Session login endpoint is queried and the session cookie is set.
    // CSRF protection should be taken into account.
    // ...
    const csrfToken = getCookie('csrfToken')
    return postIdTokenToSessionLogin('/sessionLogin', idToken, csrfToken);
  });
}).then(() => {
  // A page redirect would suffice as the persistence is set to NONE.
  return firebase.auth().signOut();
}).then(() => {
  window.location.assign('/profile');
});

Первый раздел имеет смысл - войдите и создайте сеанс. Но тогда середина then звонит signOut - что? Почему вы хотите это сделать? Перед этим кодом в документации есть комментарий, который гласит:

В случае успеха состояние должно быть очищено из хранилища на стороне клиента.

Неясно, является ли этот комментарий ссылаясь на signOut вызов. Не совсем уверен, почему вы это сделаете, так или иначе ... тогда firebase думает, что пользователь вышел из системы, но ваш сервер имеет активную сессию для этого пользователя.

Может ли кто-нибудь пролить на это какую-то информацию?

1 Ответ

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

Существует строка кода из этого примера, которая важна для контекста:

// As httpOnly cookies are to be used, do not persist any state client side.
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.NONE);

При отключенном постоянстве состояние сохраненного входа отсутствует. Когда страница перезагружается, перенаправляет или как-то уходит, пользователь фактически выходит из системы, потому что его токен не запоминается. Цель всего примера - показать, как поместить этот токен в файл Cook ie, который будет сохранен в обычном режиме в виде файлов cookie, а также отправлен на сервер при будущих запросах и может быть проверен администратором Firebase. SDK . Если это не то, что вы пытаетесь сделать, тогда эта страница документации неактуальна.

Вывод, который происходит позже, является просто церемониальным. Как сказано выше, в нем говорится:

Перенаправление страницы будет достаточным, поскольку постоянство установлено на NONE.

Выход из системы будет явным примечанием для читателя код, что идея состоит в том, чтобы использовать токен, сохраненный в cook ie, а не в собственной персистенции Firebase Auth (которая, опять же, была отключена выше).

...