У меня есть проект, использующий firebase, где я использую токен firebase id для проверки пользователя на бэкэнде.
На самом деле, на клиенте, когда пользователь входит в систему, я использую getIdToken(true)
и присоединяю его к заголовку моих запросов.
На сервере для каждого запроса я использую verifyIdToken
, чтобы проверить, вошел ли пользователь в систему и является ли он действительным.
Проблема в том, что через некоторое время токен истекает, и сервер не может проверить пользователя.
Мой вопрос: как получить эту работу?
Я думаю об использовании перехватчика запросов со стороны клиента для получения токена идентификатора для каждого запроса, но я не знаю, является ли это хорошей практикой и нужно ли также аннулировать другие токены с помощью admin.auth().revokeRefreshTokens(userId)
.
Заранее спасибо.
клиент
axios.interceptors.request.use(function (config) {
if (!firebase.auth().currentUser) {
return config
}
return firebase.auth().currentUser.getIdToken(true).then(token => {
config.headers.Authentication = token
return config
})
}, function (error) {
// Do something with request error
return Promise.reject(error)
})
Сервер
let decodedToken = await admin.auth().verifyIdToken(token);
let userId = decodedToken.uid;