Firebase auth idTokens - PullRequest
       7

Firebase auth idTokens

0 голосов
/ 13 мая 2019

Я прочитал так много статей об аутентификации firebase в сети, но не смог найти четкого объяснения того, как idTokens предполагается использовать на стороне клиента.Вот что я знаю до сих пор

После того, как пользователь вошел в систему, мы можем получить токен, используя следующий метод, и он автоматически обновит токен, если срок его действия истек

firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idToken) {
  // Send token to your backend via HTTPS
  // ...
}).catch(function(error) {
  // Handle error
});

Затем мы можем отправить этот токен в наш бэкэнд, где мы можем использовать firebase admin SDK для проверки токена id и получения идентификатора пользователя.

admin.auth().verifyIdToken(idToken).then(function(decodedToken) {
    var uid = decodedToken.uid;
    // ...
}).catch(function(error) {
    // Handle error
});

Вотвещи, которые я не понимаю.

  1. Нужно ли вызывать метод getIdToken () перед каждым вызовом API сервера для получения idToken?
  2. В документации Firebase говорится, что токенистекает через 1 час.Поэтому я должен отслеживать это с помощью localStorage, а затем повторно использовать токен в течение 1 часа, пока он не истечет, а затем выдать новый с помощью getIdToken ()?
  3. Должен ли я вместо этого создать сеанс на бэкэнде сUID, который не истекает, а затем использовать его, чтобы проверить, вошел ли пользователь в систему или нет?

1 Ответ

1 голос
/ 13 мая 2019
  1. Нет;как вы заметили, токен действителен в течение часа.Вы можете повторно использовать один и тот же токен в течение этого периода, если у вас нет причин для его обновления (например, если вы добавляете пользовательских утверждений )

  2. В идеале ваш сервер вернется401 Unauthorized или что-то, когда токен недействителен.Большинство библиотек REST предоставляют возможность добавлять перехватчики в цепочке запросов, поэтому вы можете проверить, получаете ли вы обратно 401 код и обновлять токен только при необходимости.

  3. Нетнеобходимость в бэкэнд-сессии, если ваша бизнес-логика этого не требует.Библиотека Firebase будет обрабатывать постоянство для вас.

...