После выхода из системы мой firebase idToken все еще действует? - PullRequest
1 голос
/ 04 мая 2020

У меня есть следующий код в моей базе Firebase:

  document.querySelector('#sign-out').addEventListener('click', () => {
    firebase.auth().signOut().then(() => {
      document.location = '/sign-in';
    }, (error) => {
      console.error('Sign Out Error', error);
    });
  })

Кажется, это работает. Я вижу, что сетевой запрос выполнен успешно, и происходит перенаправление на /sign-in.

Однако, когда я затем перехожу на /chatroom, меня считают зарегистрированным. Мой бэкэнд python / flask имеет следующий код на конечной точке:

@app.route("/chatroom")
def chatroom():
    if 'idToken' in request.cookies:
        id_token = request.cookies.get("idToken")
        try:
            decoded_token = auth.verify_id_token(id_token)
        except:
            print("INVALID TOKEN")
            return redirect(url_for("sign_in"))

        return render_template("chatroom.html")
    else:
        return redirect(url_for("sign_in"))

Вместо того, чтобы перенаправлять пользователя на /sign-in, когда я нажимаю на этот путь, Firebase проверяет, что токен действителен, и поэтому я могу продолжить, даже если я вышел из системы. .

Чего мне не хватает?

Редактировать:

Изменен код для отладки:

firebase.auth().signOut().then(() => {
    firebase.auth().onAuthStateChanged((user) => {
        if (user) {
          console.log('still signed in');
        } else {
          console.log('signed out');
        }
      });
    }, (error) => {
      console.error('Sign Out Error', error);
    });

Выводится signed out .. ... так что я совсем запутался.

1 Ответ

3 голосов
/ 04 мая 2020

Выход из системы не делает токен недействительным. Он просто заставляет SDK забыть об этом, поэтому он не обновляется и не передается другим продуктам Firebase автоматически. Старый токен будет действителен в течение 1 часа, пока его не нужно будет обновить. Если оно не обновлено, проверка не будет выполнена.

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

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