|
|
|
@ -1,6 +1,8 @@ |
|
|
|
import axios from 'axios' |
|
|
|
import router from '@/router' |
|
|
|
import {Message} from 'element-ui' |
|
|
|
import { |
|
|
|
Message |
|
|
|
} from 'element-ui' |
|
|
|
|
|
|
|
const http = axios.create({ |
|
|
|
baseURL: process.env.VUE_APP_BASE_API, |
|
|
|
@ -15,9 +17,9 @@ const http = axios.create({ |
|
|
|
* 请求拦截 |
|
|
|
*/ |
|
|
|
http.interceptors.request.use(config => { |
|
|
|
let token = sessionStorage.getItem("token"); |
|
|
|
if (token) { |
|
|
|
config.headers.token = sessionStorage.getItem("token"); |
|
|
|
let accessToken = sessionStorage.getItem("accessToken"); |
|
|
|
if (accessToken) { |
|
|
|
config.headers.accessToken = encodeURIComponent(accessToken); |
|
|
|
} |
|
|
|
return config |
|
|
|
}, error => { |
|
|
|
@ -27,9 +29,32 @@ http.interceptors.request.use(config => { |
|
|
|
/** |
|
|
|
* 响应拦截 |
|
|
|
*/ |
|
|
|
http.interceptors.response.use(response => { |
|
|
|
http.interceptors.response.use(async response => { |
|
|
|
if (response.data.code == 200) { |
|
|
|
return response.data.data; |
|
|
|
} else if (response.data.code == 400) { |
|
|
|
router.replace("/login"); |
|
|
|
} else if (response.data.code == 401) { |
|
|
|
console.log("token失效,尝试重新获取") |
|
|
|
let refreshToken = sessionStorage.getItem("refreshToken"); |
|
|
|
if (!refreshToken) { |
|
|
|
router.replace("/login"); |
|
|
|
} |
|
|
|
// 发送请求, 进行刷新token操作, 获取新的token
|
|
|
|
const data = await http({ |
|
|
|
method: 'put', |
|
|
|
url: '/refreshToken', |
|
|
|
headers: { |
|
|
|
refreshToken: refreshToken |
|
|
|
} |
|
|
|
}) |
|
|
|
// 保存token
|
|
|
|
sessionStorage.setItem("accessToken", data.accessToken); |
|
|
|
sessionStorage.setItem("refreshToken", data.refreshToken); |
|
|
|
// 这里需要把headers清掉,否则请求时会报错,原因暂不详...
|
|
|
|
response.config.headers=undefined; |
|
|
|
// 重新发送刚才的请求
|
|
|
|
return http(response.config) |
|
|
|
} else { |
|
|
|
Message({ |
|
|
|
message: response.data.message, |
|
|
|
@ -37,10 +62,6 @@ http.interceptors.response.use(response => { |
|
|
|
duration: 1500, |
|
|
|
customClass: 'element-error-message-zindex' |
|
|
|
}) |
|
|
|
|
|
|
|
if (response.data.code == 401) { |
|
|
|
router.replace("/login"); |
|
|
|
} |
|
|
|
return Promise.reject(response.data) |
|
|
|
} |
|
|
|
}, error => { |
|
|
|
|