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 => { // 抓取报错信息 let errmsg = ''; if (error.response.data.message){ errmsg += error.response.data.message } // 用户登录的时候会拿到一个基础信息,比如用户名,token,过期时间戳 // 直接丢sessionStorage if (!sessionStorage.getItem("token")) { // 若是接口访问的时候没有发现有鉴权的基础信息,直接返回登录页 // router.push({ // // path: "/login" // path: "/main" // }); } // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面 if (error.response.status === 401) { message({ // 饿了么的消息弹窗组件 message: errmsg + '授权超时,或访问未授权,请重新登录;', 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 + errmsg); } ); }, init_router: (router,axios) => { router.beforeEach((to, from, next) => { // NProgress.start(); if (to.path === '/login') { sessionStorage.removeItem('user'); sessionStorage.removeItem('menu'); sessionStorage.removeItem('token'); axios.defaults.headers.common['Authorization'] = undefined; next() }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' && !jsutil.checkNull(sessionStorage.getItem('token')) && !jsutil.checkNull(sessionStorage.getItem('menu'))) { next({ path: '/login' }) }else{ next() } } }); } } export default axois_init;