From 7e460156de73171f9660ce48f80703e79f8b478d Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期六, 14 六月 2025 11:48:26 +0800 Subject: [PATCH] 初始化提交 --- src/utils/request.js | 75 ++++++++++++++++++++++--------------- 1 files changed, 44 insertions(+), 31 deletions(-) diff --git a/src/utils/request.js b/src/utils/request.js index 2fb95ac..943d164 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -2,19 +2,23 @@ import { MessageBox, Message } from 'element-ui' import store from '@/store' import { getToken } from '@/utils/auth' +import { refresh } from '@/api/user' +import getters from '@/store/getters' +import { setToken, setrefreshToken } from '@/utils/auth' +var qs = require('qs') // create an axios instance const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url // withCredentials: true, // send cookies when cross-domain requests - timeout: 5000 // request timeout + timeout: 10000 // request timeout }) - // request interceptor service.interceptors.request.use( config => { + // console.log('璇锋眰鎷︽埅鍣�===>', config) // do something before request is sent - + // console.log(config) if (store.getters.token) { // let each request carry token // ['X-Token'] is a custom headers key @@ -42,39 +46,48 @@ * Here is just an example * You can also judge the status by HTTP Status Code */ - response => { - const res = response.data - - // if the custom code is not 20000, it is judged as an error. - if (res.code !== 20000) { - Message({ - message: res.message || 'Error', - type: 'error', - duration: 5 * 1000 - }) - - // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; - if (res.code === 50008 || res.code === 50012 || res.code === 50014) { - // to re-login - MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { - confirmButtonText: 'Re-Login', - cancelButtonText: 'Cancel', - type: 'warning' - }).then(() => { - store.dispatch('user/resetToken').then(() => { - location.reload() - }) - }) - } - return Promise.reject(new Error(res.message || 'Error')) - } else { - return res + async(response) => { + // console.log(response) + if (response.headers.requesttype === 'excel') { + return response } + const res = response.data + // console.log(store) + // console.log(store.state.user.refresh) + if (res.code === 10010) { + const { data: { token, refresh: refreshToken }} = await refresh(qs.stringify({ refresh: store.state.user.refresh })) + store.commit('SET_TOKEN', token) + store.commit('SET_REFRESH', refreshToken) + // console.log('閲嶆柊鍒锋柊token鎴愬姛', token, refreshToken) + setToken(token) + setrefreshToken(refreshToken) + axios.request(response.config) + // console.log('token鍒锋柊', getters.refresh()) + // refresh({ refresh : getters.refresh() }) + // refresh({ refresh : getters.refresh() }).then((res)=>{ + // console.log(res) + // }) + return Promise.resolve(res) + } + // if (res.code === 10010) { + // console.log('token鍒锋柊') + // refresh({ refresh : getters.refresh() }).then(async (res) => { + // console.log(res) + // await store.dispatch('flushedToken', res.data) + // }) + // return axios.request(response.config) + // } + // console.log(res) + // if the custom code is not 20000, it is judged as an error. + return res }, error => { + console.log(error) + console.log('err' + error) // for debug Message({ - message: error.message, + message: '閿欒锛岃閲嶆柊灏濊瘯', + // message: error.message, type: 'error', duration: 5 * 1000 }) -- Gitblit v1.9.3