当token过期,如何在axios里面用拦截器next()到登陆呢?
例如 ajax返回 code:1 为正常 ,code :-1 为token过期
如何通过
axios.interceptors.response.use(function (response) { next() } 到 login.vue 呢?
=========================
import Vue from 'vue';
import iView from 'iview';
import Util from '../libs/util';
import VueRouter from 'vue-router';
import {routers} from './router';
import config from '../../build/config';
import axios from 'axios';
Vue.use(VueRouter);
// 路由配置
const RouterConfig = {
routes: routers
};
export const router = new VueRouter(RouterConfig);
router.beforeEach((to, from, next) => {
let apiAuth = sessionStorage.getItem('apiAuth');
iView.LoadingBar.start();
Util.title(to.meta.title);
console.log(to)
// if (sessionStorage.getItem('locking') === '1' && to.name !== 'locking') { // 判断当前是否是锁定状态
// next({
// replace: true,
// name: 'locking'
// });
// } else if (sessionStorage.getItem('locking') === '0' && to.name === 'locking') {
// next(false);
// } else {
if (!apiAuth && to.name !== 'login') { // 判断是否已经登录且前往的页面不是登录页
next({
name: 'login'
});
} else if (apiAuth && to.name === 'login') { // 判断是否已经登录且前往的是登录页
Util.title();
next({
name: 'home_index'
});
} else {
axios.defaults.baseURL = config.baseUrl;
axios.interceptors.request.use(function (config) {
console.log('全局加token')
config.headers['version'] = 'v1.0'
if(sessionStorage.getItem('apiAuth')){
config.headers['user-token'] = sessionStorage.getItem('apiAuth')
}
if(sessionStorage.getItem('access-token')){
config.headers['access-token'] = sessionStorage.getItem('access-token')
}
return config;
});
axios.interceptors.response.use(function (response) {
console.log('%c------response-------',"color: green;")
console.log(response.data.code)
if(response.data.code == 1){ // token失效
router.push({ name: 'login'})
}
console.log('%c------response-------',"color: green;")
return response;
}, function (error) {
console.error(error)
});
Util.toDefaultPage([...routers], to.name, router, next);
}
// }
});
router.afterEach((to) => {
Util.openNewPage(router.app, to.name, to.params, to.query);
iView.LoadingBar.finish();
window.scrollTo(0, 0);
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你要的是跳转到
登录页面
对吧,在 axios 配置的文件中 import vue-router,在其中 使用 router.push(..),或者直接 window.location.href 跳转;另外,next 是 router hook 的方法,外部无法使用;
import
你的路由文件,router.push()