@evlgromov

Как передать параметр в компонент vue при использовании интерцептора axios?

В проекте на Vue в файле main.js отлавливаются ошибки авторизации, при истечении срока действия токена осуществляется редирект на страницу логина, это работает без проблем. Моя задача сейчас при вводе некорректных данных отлавливать эту ошибку и передать параметр e.response.data.message с сообщением об ошибке с сервера в компонент Login без router.push. Если я использую редирект выдается ошибка типа осуществляется редирект с роута /login на /login избегайте подобной штуки. Как можно передать e.response.data.message в Login.vue?

main.js
axios.interceptors.response.use(
  res => {
    return res
  },
  error => {
    if(error.response.status === 401) {
      if (router.currentRoute.name !== 'Login') {
        store.dispatch('destroyToken')
        router.push({
          name: 'Login',
          params: {
            message: 'Срок действия токена истек, пожалуйста авторизуйтесь!'
          }
        })
      }
    }
    return Promise.reject(error)
  }
)
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
@evlgromov Автор вопроса
Сделал посредством коммита ошибки в стор.
axios.interceptors.response.use(
  res => {
    return res
  },
  error => {
    if(error.response.status === 401) {
      if (router.currentRoute.name !== 'Login') {
        store.dispatch('destroyToken')
        router.push({
          name: 'Login',
          params: {
            message: 'Срок действия токена истек, пожалуйста авторизуйтесь!'
          }
        })
      } else {
        store.commit('createError', error.response.data)
      }
    }
    return Promise.reject(error)
  }
)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы