|
|
@@ -2,6 +2,7 @@ import axios from 'axios'
|
|
|
import { MessageBox, Message } from 'element-ui'
|
|
|
import store from '@/store'
|
|
|
import usersInfo from './usersInfo'
|
|
|
+import tool from './tool'
|
|
|
|
|
|
// create an axios instance
|
|
|
const service = axios.create({
|
|
|
@@ -24,6 +25,46 @@ service.interceptors.request.use(
|
|
|
if (usersInfo.accessToken()) {
|
|
|
config.headers['Authorization'] = process.env.VUE_APP_ACCESS_TOKEN_PREFIX + usersInfo.accessToken()
|
|
|
}
|
|
|
+ if (usersInfo.accessToken() && usersInfo.accessTokenExpiresIn()
|
|
|
+ && parseInt(usersInfo.accessTokenExpiresIn()) + parseInt(usersInfo.accessTokenUpdateAt()) - 30 > parseInt(tool.getTimestamp())) {
|
|
|
+ } else if(usersInfo.accessToken()) {
|
|
|
+ // 需要先刷新token
|
|
|
+ let refreshToken = usersInfo.refreshToken()
|
|
|
+ let refreshTokenExpiresIn = usersInfo.refreshTokenExpiresIn()
|
|
|
+ let refreshTokenUpdateAt = usersInfo.refreshTokenUpdateAt()
|
|
|
+ if (refreshToken && refreshTokenExpiresIn
|
|
|
+ && parseInt(refreshTokenExpiresIn) - 30 + parseInt(refreshTokenUpdateAt) > parseInt(tool.getTimestamp())) {
|
|
|
+ // 有效,去更新
|
|
|
+ axios.get(`${process.env.VUE_APP_BASE_API}/v1/oauth/refresh-token?refresh-token=${refreshToken}`).then(response => {
|
|
|
+ // 更新本地accessToken
|
|
|
+ usersInfo.accessToken(response.data.accessToken)
|
|
|
+ usersInfo.accessTokenExpiresIn(response.data.accessTokenExpiresIn)
|
|
|
+ usersInfo.accessTokenUpdateAt(response.data.accessTokenUpdateAt)
|
|
|
+ usersInfo.refreshToken(response.data.refreshToken)
|
|
|
+ usersInfo.refreshTokenExpiresIn(response.data.refreshTokenExpiresIn)
|
|
|
+ usersInfo.refreshTokenUpdateAt(response.data.refreshTokenUpdateAt)
|
|
|
+ usersInfo.accessToken()
|
|
|
+
|
|
|
+ }).catch(error => {
|
|
|
+ Message({
|
|
|
+ message: 'accessToken Failed',
|
|
|
+ type: 'error',
|
|
|
+ duration: 5 * 1000
|
|
|
+ })
|
|
|
+ return
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ //console.log('refreshToken已失效');
|
|
|
+ usersInfo.clear()
|
|
|
+ Message({
|
|
|
+ message: 'refreshToken Invalid',
|
|
|
+ type: 'error',
|
|
|
+ duration: 5 * 1000
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return config
|
|
|
},
|
|
|
error => {
|
|
|
@@ -51,7 +92,6 @@ service.interceptors.response.use(
|
|
|
})
|
|
|
return
|
|
|
} else {
|
|
|
- console.log(responseData)
|
|
|
if (!data) {
|
|
|
return {data: responseData}
|
|
|
}
|