Как обновить заголовок Axios по умолчанию от перехватчиков? - PullRequest
0 голосов
/ 20 января 2019

У меня есть следующий код, который обновляет токен аутентификации JWT:

axios.defaults.headers.common["Authorization"] = 'Bearer ' + jwt.getToken();

axios.interceptors.request.use((config) => {
  let originalRequest = config
  if (jwt.isTokenExpired() && api.unauthPaths.indexOf(config.url) == -1) {
    return api.refreshToken()
      .then(res => {
        if (res.data.error == 'TOKEN_BLACKLISTED' && res.headers.authorization) {
          let token = res.headers.authorization.slice(7)

          console.log(`Current token: ${ axios.defaults.headers.common["Authorization"]}`)
          axios.defaults.headers.common["Authorization"] = 'Bearer ' + token;
          //in this log token is new, but each next request uses the old token
          console.log(`New token: ${ axios.defaults.headers.common["Authorization"]}`)
          alert('token was refreshed')
          return Promise.resolve(originalRequest)
        } else {
          jwt.destroyToken()
          jwt.destroyExpiredTime()
          store.dispatch('auth/destroyToken')
          router.push({name: 'login'})
          return Promise.reject()
        }
      })
  }
  return config
}, (err) => {
  return Promise.reject(err)
})

Мне нужно обновить токен, когда я получаю новый с сервера. Но когда я использую

axios.defaults.headers.common["Authorization"] = 'Bearer ' + token; 

В приведенном выше коде axios не меняет токен по умолчанию на новый. Каждый следующий запрос идет со старым токеном. Как установить новый токен из перехватчиков axios?

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