Токен не отправлен с запросом - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть действие Vuex, которое запускается при каждой загрузке страницы (не router.push), эта функция работает нормально в том смысле, что она проверяет токен и, если токен существует, он перемещается.Моя проблема в том, что я отправляю еще одно действие, для которого требуется этот токен.

Хорошо, так что немного яснее, я использую Axios с Vue.js для отправки запроса API.В моем файле main.js для заголовка авторизации установлено значение хранилища Vuex.Затем у меня есть загрузка App.uve, которая запускает действие по умолчанию, которое проверяет наличие токена (JWT).Это действие по умолчанию также отправляет другое действие под названием storeUser, которое отправляет запрос GET конечной точке API информации пользователя.При отправке этого вызова API пользовательской информации я вижу на своем бэкэнде, что это не авторизованный вызов API.При проверке заголовков мне нужен заголовок авторизации undefined.Ниже приведен код, который я считаю релевантным.

Действие по умолчанию, которое запускается при загрузке App.vue

tryAutoLogin({commit, dispatch}) {
  const token = localStorage.getItem('token')
  if(!token) {return}
    commit('authUser',{
    token
  })
  dispatch('storeUser')
},

второе действие, вызывающеепроблема

storeUser({commit, state}, userData) {
  if(!state.token) return
  axios.get('/user/userInfo')
   .then(res => {
     console.log(res)
  })
   .catch(err => {
     console.log(err)
  })
},

main.js необходимые детали

import store from './store/store.js'
axios.defaults.headers.common['Authorization'] = store.token
new Vue({
  render: h => h(App),
  store,
  router
}).$mount('#app')

Я вырезал тонну в main.js, чтобы сделать его чище, но этосвязанные части к этой проблеме.Я не думаю, что есть что-то еще.

store.js state

state: {
  token: null,
  name: '',
  companyName: ''
},

1 Ответ

1 голос
/ 25 сентября 2019

Благодаря Филу в комментариях к ОП у меня работает код ниже.

axios.interceptors.request.use(function (config) {
  config.headers.Authorization = store.state.token;
  return config;
}, function (error) {
  return Promise.reject(error);
});
...