@AndrewRusinas

Можно ли изменить конфигурацию axios без перезагрузки скрипта?

Я вешаю токен в заголовки всех запросов, если таковой есть в локалсторедже.
const user = JSON.parse(window.localStorage.getItem('user')) || false

if (user)
{
  if (user.token)
  {
    config.headers = {
      'token': JSON.stringify(user.token)
    }
  }
}


Сейчас приходится напрямую вызывать перезагрузку страницы после логина, чтобы заново инициализировать axios с токеном. Немного ухудшает пользовательский опыт. Наверняка есть способ навесить заголовки по другому.

Пока писал пришла идея просто в каждом запросе проверять наличие токена и назначать заголовок, но будет ли это хорошей практикой? При КАЖДОМ запросе читать local storage
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
не понятно: в какой момент требуется поменять токен, и на какой.
Конечно же можно в любой момент переконфигурировать axios. Он берёт настройки в таком порядке:
  1. из файла lib/defaults.js
  2. затем из настроек инстанса
  3. затем из опций, переданных в текущий запрос


Вы не привели код, где подставляете token в параметры axios. Допустим, что-то глобальное:
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;


Точно так же потом, когда надо поменять токен, делаете примерно так:
axios.defaults.headers.common['Authorization'] = NEW_TOKEN;

и вперёд, можно делать запросы с новым токеном
axios.get('https://google.com').then(r => console.log(r));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы