main.js

import Vue from 'vue';
import App from './App.vue';
import router from './router';
import ElementUI from 'element-ui';
import VueI18n from 'vue-i18n';
import axios from 'axios';
import qs from 'qs';
import {
    messages
} from './components/common/i18n';
import 'element-ui/lib/theme-chalk/index.css'; // 默认主题
// import './assets/css/theme-green/index.css'; // 浅绿色主题
import './assets/css/icon.css';
import './components/common/directives';
import 'babel-polyfill';

import {
    showLoading,
    hideLoading
} from './components/common/loading.js';

//引入百度富文本编辑器
import '../src/assets/ue/ueditor.config.js'

import '../src/assets/ue/ueditor.all.min.js'

import '../src/assets/ue/lang/zh-cn/zh-cn.js'

import '../src/assets/ue/themes/default/css/ueditor.css'
// import '../src/assets/ue/ueditor.parse.min.js'
import vcolorpicker from 'vcolorpicker'
Vue.use(vcolorpicker)
Vue.config.productionTip = false;
Vue.use(VueI18n);
Vue.use(ElementUI, {
    size: 'small'
});
const i18n = new VueI18n({
    locale: 'zh',
    messages
});


//备注 修改baseURL的时候需要搜索(http://msmtest.ishare-go.com)全局修改 以及$url
console.log(process.env.VUE_APP_API_ROOT,'process.env.VUE_APP_API_ROOT,')
let baseURL=process.env.VUE_APP_API_ROOT   //自动识别环境
axios.defaults.withCredentials = true;
let instance = axios.create({
    baseURL: baseURL, //test分支 ==> 请求基地址1
    // baseURL: 'http://msm.ishare-go.com', //master分支 ==> 请求基地址
    // timeout: 3000,//请求超时时长
    // url: '/url',//请求路径
    // method: 'get,post,put,patch,delete',//请求方法
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }, //请求头
    // params: {},//请求参数拼接在url上面
    // data: {},//请求参数放请求体里
})
Vue.prototype.$axios = instance
Vue.prototype.$url= baseURL   //图片路径前缀  发布时需要修改
axios.defaults.baseURL = '/api' //关键代码
Vue.config.productionTip = false
// axios.defaults.withCredentials = true;//1
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
// axios.defaults.baseURL = 'http://msmtest.ishare-go.com'
// axios.defaults.baseURL = 'http://testapi.ishare-go.com'
// axios.defaults.baseURL = 'http://msmtest.com'
// axios.defaults.baseURL = '/api'

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    if (config.url != '/platformapi/system/albumList') {
        showLoading();
    }
    // if (localStorage.getItem("user_token")) {
    //     config.headers.common['user_token'] = localStorage.getItem("user_token")
    // }
    //请求头转换为表单形式
    // config.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
    config.transformRequest = [function (data) {
        // 在请求之前对data传参进行格式转换
        data = qs.stringify(data)
        return data
    }]
    return config
}, function (error) {
    return Promise.reject(error)
})


router.beforeEach((to, from, next) => {

    // console.log(to, 'aa')
    // console.log(from, 'bb')
    if (to.path.indexOf('/login') > -1) {
        next()
        return;
    }
    if (to.path.indexOf('/403') > -1) {
        next()
        return;
    }
    if (to.path.indexOf('/404') > -1) {
        next()
        return;
    }
    // if (localStorage.getItem('url')) {
    //     let urlArr = localStorage.getItem('url').split(',');
    //     console.log(urlArr.includes(to.path), 'urlArr.includes(to.path)')
    //     if (!urlArr.includes(to.path)) {
    //         next({
    //             path: '/403',
    //         })
    //         return
    //     }
    // }
    // if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
    console.log(localStorage.getItem("user_token"), 'popopopo')
    if (localStorage.getItem("user_token")) { // 判断本地是否存在token
        console.log('1')
        next()
    } else {
        // 未登录,跳转到登陆页面
        // next({
        //     path: '/login'
        // })
        // let href = localStorage.getItem('loginHref');
        // location.href = href;
        // localStorage.clear();
        // next()
        if (localStorage.getItem('loginHref')) {
            console.log('2')
            let href = localStorage.getItem('loginHref');
            location.href = href;
            localStorage.clear();
        } else {
            console.log('3')
            next({
                path: '/login',
            })
        }
    }

});

/* 请求之后的操作 */
instance.interceptors.response.use((res) => {
    if (res.data.code == -888888) {
        if (localStorage.getItem('loginHref')) {
            console.log('2')
            let href = localStorage.getItem('loginHref');
            location.href = href;
            localStorage.clear();
        } else {
            console.log('3')
            next({
                path: '/login',
            })
        }
    }
    // console.log(res.data.code, '响应拦截1')
    if (res.data.code == -999999) {
        // console.log(res, '响应拦截2')
        console.log(Vue, 'Vue')
        Vue.prototype.$message.warning('没有操作权限')
        router.push({
            path: '/403'
        })
    }
    hideLoading();
    // console.log(res, '响应拦截3')
    return res;
}, (err) => {
    hideLoading();
    return Promise.reject(err);
});

new Vue({
    router,
    i18n,
    render: h => h(App)
}).$mount('#app');
原文地址:https://www.cnblogs.com/xiaoxiaoxun/p/13344650.html