| | |
| | | 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 |
| | |
| | | * 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 |
| | | }) |