interceptors.js 2.21 KB
Newer Older
wb-ct393452's avatar
wb-ct393452 committed
1 2
// 401拦截
const resp401 = {
水落(YangLei)'s avatar
水落(YangLei) committed
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    /**
     * 响应数据之前做点什么
     * @param response 响应对象
     * @param options 应用配置 包含: {router, i18n, store, message}
     * @returns {*}
     */
    onFulfilled(response, options) {
        const { message } = options;
        if (response.code === 401) {
            message.error('无此权限');
        }
        return response;
    },
    /**
     * 响应出错时执行
     * @param error 错误对象
     * @param options 应用配置 包含: {router, i18n, store, message}
     * @returns {Promise<never>}
     */
    onRejected(error, options) {
        const { message } = options;
        const { response } = error;
        if (response.status === 401) {
            message.error('无此权限');
        }
        return Promise.reject(error);
    },
};
wb-ct393452's avatar
wb-ct393452 committed
31 32

const resp403 = {
水落(YangLei)'s avatar
水落(YangLei) committed
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
    onFulfilled(response, options) {
        const { message } = options;
        if (response.code === 403) {
            message.error('请求被拒绝');
        }
        return response;
    },
    onRejected(error, options) {
        const { message } = options;
        const { response } = error;
        if (response.status === 403) {
            message.error('请求被拒绝');
        }
        return Promise.reject(error);
    },
};
wb-ct393452's avatar
wb-ct393452 committed
49 50

const reqCommon = {
水落(YangLei)'s avatar
水落(YangLei) committed
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
    /**
     * 发送请求之前做些什么
     * @param config axios config
     * @param options 应用配置 包含: {router, i18n, store, message}
     * @returns {*}
     */
    onFulfilled(config, options) {
        const { message } = options;
        const { url, xsrfCookieName } = config;
        if (url.indexOf('login') === -1 && xsrfCookieName) {
            message.warning('认证 token 已过期,请重新登录');
        }
        return config;
    },
    /**
     * 请求出错时做点什么
     * @param error 错误对象
     * @param options 应用配置 包含: {router, i18n, store, message}
     * @returns {Promise<never>}
     */
    onRejected(error, options) {
        const { message } = options;
        message.error(error.message);
        return Promise.reject(error);
    },
};
wb-ct393452's avatar
wb-ct393452 committed
77 78

export default {
水落(YangLei)'s avatar
水落(YangLei) committed
79 80 81
    request: [reqCommon], // 请求拦截
    response: [resp401, resp403], // 响应拦截
};