Как правильно обновлять access (JWT) токен в SPA?

136
19 августа 2019, 13:50

Есть SPA. Для того, чтобы юзеру не пришлось каждый раз перелогиниваться, сначала смотрю, не просрочен ли у него токен:

axios.interceptors.request.use( (config) => {
  if (jwt.isTokenExpired()) {
    api.refreshToken()
      .then(res => {
        if (res.data.error == 'TOKEN_BLACKLISTED' && res.headers.authorization) {
          let token = res.headers.authorization
          jwt.setToken(`"${token}"`)
          api.setHeader()
        } else {
          jwt.destroyToken()
          jwt.destroyExpiredTime()
          store.dispatch('auth/destroyToken')
          router.push({name: 'login'})
        }
      })
  }
  return config;
}, function (error) {      
  return Promise.reject(error);
});

Проблема в том, что api.refreshToken() - это тот же самый axios, поэтому идет бесконечный цикл: интерцептор перехватывает и вызывает сам у себя api.refreshToken(). Вопрос: как это решить? Можно ли отключить на какой-либо запрос перехват интерцептором запроса?

READ ALSO
phantomjs скачка файла по кнопке

phantomjs скачка файла по кнопке

В консоли браузера, все норм, файл загружается

116
Слайдер пунктов списка на чистом JS

Слайдер пунктов списка на чистом JS

Прошу помочь написать скрипт прокрутки списка пунктов на чистом JSСуть проблемы такова: Есть сайдбар с двумя дивами, где каждый имеет свой...

140
Как оптимизировать запрос к API

Как оптимизировать запрос к API

Есть API где я могу получить за один запрос данные только за текущий деньПроблема в том что если мне надо будет достать данные за 30 дней, то мне...

157
PHP json вывод данных

PHP json вывод данных

Всем привет! помогите вывести метку на карту

172