鍍金池/ 問答/HTML/ vue的怎么在新建的axios.js攔截器文件里用vuerouter跳轉(zhuǎn)

vue的怎么在新建的axios.js攔截器文件里用vuerouter跳轉(zhuǎn)

新建的http.js設(shè)置攔截器,怎么在請(qǐng)求攔截器里判斷未登錄,然后用vue-router跳轉(zhuǎn)到登錄頁(yè)面

import axios from 'axios'
import { Message } from 'element-ui'
import Router from 'vue-router'

axios.interceptors.request.use(function (config) {
    // 在發(fā)送請(qǐng)求之前做些什么
    console.log('請(qǐng)求呀')
    Router.push('/login')//這樣用不對(duì)
    return config;
}, function (error) {
    // 對(duì)請(qǐng)求錯(cuò)誤做些什么
    Message.error({message: '服務(wù)器故障', duration: 2000})
    return Promise.reject(error);
});

這樣報(bào)錯(cuò)

回答
編輯回答
網(wǎng)妓

Axios 不適合做未登錄的跳轉(zhuǎn)
如果判斷未登錄最好的跳轉(zhuǎn)方式是

import router from './router'

router.beforeEach((to, from, next) => {
  if (getToken()) { // 判斷是否有token
      // 其他的邏輯
    } else {
      next('/login') // 否則全部重定向到登錄頁(yè)
    }
  }
})
2018年6月3日 09:19
編輯回答
護(hù)她命

axios.interceptors.response.use(
response => {

 if(response.data.code == "-999"){
    layer.msg("登錄超時(shí),請(qǐng)重新登錄!")
     localStorage.clear();
     store.dispatch("add2")
     store.dispatch("del1")
     router.push({path: "/login"})
 }
return response;

},
error => {

  return Promise.reject(error)

});

2017年8月7日 10:03
編輯回答
款爺

在路由文件router.js中新建路由實(shí)例

//router.js
const router = new vueRouter({
    routes,
    mode: 'history',
    base: __dirname,
    ...
});
...
export default router;

在需要使用路由的地方引入router

//axios.js
import router from 'router.js';
router.push(link);
2017年2月27日 05:07
編輯回答
夏夕

這里是不行的,用window.location.href來跳轉(zhuǎn)

2018年1月8日 08:56