import jsutil from "@/common/js/util"; import axios from "@/axios"; var axois_init = { init_axios: (message,router,axios) => { axios.defaults.baseURL = '/api'; axios.interceptors.response.use( res => { //对响应数据做些事 if (res.data && res.status!==200) { message({ // 饿了么的消息弹窗组件,类似toast showClose: true, message: 'res.data.error.message.message ? res.data.error.message.message : res.data.error.message', type: "error" }); return Promise.reject(res.data.error.message); } return res; }, error => { // 用户登录的时候会拿到一个基础信息,比如用户名,token,过期时间戳 // 直接丢sessionStorage if (!sessionStorage.getItem("token")) { // 若是接口访问的时候没有发现有鉴权的基础信息,直接返回登录页 router.push({ path: "/login" }); } // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面 if (error.response.status === 401) { message({ // 饿了么的消息弹窗组件 message: '授权超时,或访问未授权,请重新登录', type: "error" }); } // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面 if (error.response.status === 403) { router.push({ path: "/error/403" }); } if (error.response.status === 500) { message({ // 饿了么的消息弹窗组件 message: error.message, type: "error" }); // router.push({ // path: "/error/500" // }); } if (error.response.status === 502) { router.push({ path: "/error/502" }); } if (error.response.status === 404) { message({ // 饿了么的消息弹窗组件 message: "访问不存在", type: "error" }); } let errorInfo = "出错了"; if(jsutil.checkNull(error.response)){ errorInfo = error.response.statusText }else if(jsutil.checkNull(error.data) && jsutil.checkNull(error.data.error) && jsutil.checkNull(error.data.error.message)){ errorInfo = error.data.error.message; }else if (jsutil.checkNull(error.message)){ errorInfo = error.message; }else { errorInfo = error; } // 返回 response 里的错误信息 return Promise.reject(errorInfo); } ); }, init_router: (router,axios) => { router.beforeEach((to, from, next) => { //NProgress.start(); if (to.path == '/login') { sessionStorage.removeItem('user'); sessionStorage.removeItem('menu'); sessionStorage.removeItem('token'); }else{ let user = JSON.parse(sessionStorage.getItem('user')); if(sessionStorage.getItem('token')){ axios.defaults.headers.common['Authorization'] = sessionStorage.getItem('token'); } if (!jsutil.checkNull(user) && to.path != '/login' && !sessionStorage.getItem('menu') && !sessionStorage.getItem('token')) { next({ path: '/login' }) } } next() }); } } export default axois_init;