From 5186227a467bd34dc253e64b23bc96d3a07bb399 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期三, 17 十一月 2021 17:39:53 +0800 Subject: [PATCH] 添加用户权限控制 --- src/utils/request.js | 114 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 58 insertions(+), 56 deletions(-) diff --git a/src/utils/request.js b/src/utils/request.js index 272a731..b06ceab 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -1,5 +1,5 @@ -import Vue from 'vue' -import axios from 'axios' +import Vue from "vue"; +import axios from "axios"; import { baseURL, contentType, @@ -10,116 +10,118 @@ successCode, tokenName, loginInterception, -} from '@/config' -import store from '@/store' -import qs from 'qs' -import router from '@/router' -import { isArray } from '@/utils/validate' +} from "@/config"; +import store from "@/store"; +import qs from "qs"; +import router from "@/router"; +import { isArray } from "@/utils/validate"; -let loadingInstance +let loadingInstance; /** - * @author chuzhixin 1204505056@qq.com 锛堜笉鎯充繚鐣檃uthor鍙垹闄わ級 * @description 澶勭悊code寮傚父 * @param {*} code * @param {*} msg */ const handleCode = (code, msg) => { + console.log(code, msg); switch (code) { case invalidCode: - Vue.prototype.$baseMessage(msg || `鍚庣鎺ュ彛${code}寮傚父`, 'error') - store.dispatch('user/resetAccessToken').catch(() => {}) + Vue.prototype.$baseMessage(msg || `鍚庣鎺ュ彛${code}寮傚父`, "error"); + store.dispatch("user/resetAccessToken").catch(() => {}); if (loginInterception) { - location.reload() + location.reload(); } - break + break; case noPermissionCode: - router.push({ path: '/401' }).catch(() => {}) - break + router.push({ path: "/401" }).catch(() => {}); + break; default: - Vue.prototype.$baseMessage(msg || `鍚庣鎺ュ彛${code}寮傚父`, 'error') - break + Vue.prototype.$baseMessage(msg || `鍚庣鎺ュ彛${code}寮傚父`, "error"); + break; } -} +}; const instance = axios.create({ baseURL, timeout: requestTimeout, headers: { - 'Content-Type': contentType, + "Content-Type": contentType, }, -}) +}); instance.interceptors.request.use( (config) => { - if (store.getters['user/accessToken']) { - config.headers[tokenName] = store.getters['user/accessToken'] + if (store.getters["user/accessToken"]) { + config.headers["Authorization"] = + "Bearer " + store.getters["user/accessToken"]; } //杩欓噷浼氳繃婊ゆ墍鏈変负绌恒��0銆乫alse鐨刱ey锛屽鏋滀笉闇�瑕佽鑷娉ㄩ噴 if (config.data) config.data = Vue.prototype.$baseLodash.pickBy( config.data, Vue.prototype.$baseLodash.identity - ) + ); if ( config.data && - config.headers['Content-Type'] === - 'application/x-www-form-urlencoded;charset=UTF-8' + config.headers["Content-Type"] === + "application/x-www-form-urlencoded;charset=UTF-8" ) - config.data = qs.stringify(config.data) + config.data = qs.stringify(config.data); if (debounce.some((item) => config.url.includes(item))) - loadingInstance = Vue.prototype.$baseLoading() - return config + loadingInstance = Vue.prototype.$baseLoading(); + return config; }, (error) => { - return Promise.reject(error) + return Promise.reject(error); } -) +); instance.interceptors.response.use( (response) => { - if (loadingInstance) loadingInstance.close() + if (loadingInstance) loadingInstance.close(); - const { data, config } = response - const { code, msg } = data + const { data, config } = response; + const { code, msg } = data; + // 鎿嶄綔姝e父Code鏁扮粍 const codeVerificationArray = isArray(successCode) ? [...successCode] - : [...[successCode]] + : [...[successCode]]; // 鏄惁鎿嶄綔姝e父 if (codeVerificationArray.includes(code)) { - return data + return data; } else { - handleCode(code, msg) + handleCode(code, msg); return Promise.reject( - 'vue-admin-beautiful璇锋眰寮傚父鎷︽埅:' + - JSON.stringify({ url: config.url, code, msg }) || 'Error' - ) + "璇锋眰寮傚父鎷︽埅:" + JSON.stringify({ url: config.url, code, msg }) || + "Error" + ); } }, (error) => { - if (loadingInstance) loadingInstance.close() - const { response, message } = error + if (loadingInstance) loadingInstance.close(); + const { response, message } = error; if (error.response && error.response.data) { - const { status, data } = response - handleCode(status, data.msg || message) - return Promise.reject(error) + const { status, data } = response; + handleCode(status, data.msg || message); + return Promise.reject(error); } else { - let { message } = error - if (message === 'Network Error') { - message = '鍚庣鎺ュ彛杩炴帴寮傚父' + let { message } = error; + if (message === "Network Error") { + message = "鍚庣鎺ュ彛杩炴帴寮傚父"; } - if (message.includes('timeout')) { - message = '鍚庣鎺ュ彛璇锋眰瓒呮椂' + if (message.includes("timeout")) { + message = "鍚庣鎺ュ彛璇锋眰瓒呮椂"; } - if (message.includes('Request failed with status code')) { - const code = message.substr(message.length - 3) - message = '鍚庣鎺ュ彛' + code + '寮傚父' + if (message.includes("Request failed with status code")) { + const code = message.substr(message.length - 3); + message = "鍚庣鎺ュ彛" + code + "寮傚父"; } - Vue.prototype.$baseMessage(message || `鍚庣鎺ュ彛鏈煡寮傚父`, 'error') - return Promise.reject(error) + Vue.prototype.$baseMessage(message || `鍚庣鎺ュ彛鏈煡寮傚父`, "error"); + return Promise.reject(error); } } -) +); -export default instance +export default instance; -- Gitblit v1.8.0