Vue.js и Axios - перенаправление на 401 - PullRequest
0 голосов
/ 30 августа 2018

Я использую Vue.js и axios и пытаюсь создать общий объект API, подобный следующему:

import router from './router'
import auth from './auth'
const axios = require('axios')

export const API = axios.create({
  baseURL: `https://my-api.com/`,
  headers: {
    Authorization: auth.getToken()
  }
})

API.interceptors.response.use(null, function (error) {
  if (error.response.status === 401) {
    console.log('Failed to login')
    router.push('/Login')
  }
  return Promise.reject(error)
})

Я пытаюсь перенаправить пользователей на экран Login в моем одностраничном приложении при получении кода ошибки 401. Но я не получаю перенаправление, и в инструментах разработчика в Chrome не возникает никаких ошибок. Я получаю console.log с Failed to login.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Я обнаружил похожую ситуацию. Я исправил этот код:

import router from 'router'
import store from 'store'
...
...
axios.interceptors.response.use(function (response) {
  return response
}, function (error) {
  console.log(error.response.data)
  if (error.response.data.error.statusCode === 401) {
    store.dispatch('logout')
    router.push('/login')
  }
  return Promise.reject(error)
})
0 голосов
/ 16 декабря 2018

Вы можете сделать что-то вроде следующего:

axios.post("quote", params)
  .catch(function(error) {
    if (error.response && error.response.status === 401) {
      window.location.href = "logon";
    } else {
      // Handle error however you want
    }
  });

Источник: https://github.com/axios/axios/issues/396#issuecomment-395592900

...