diff --git a/src/api/Login/index.ts b/src/api/Login/index.ts index 04a955b..6bea0ce 100644 --- a/src/api/Login/index.ts +++ b/src/api/Login/index.ts @@ -11,4 +11,9 @@ export const PostLogin = (data: any) => method: 'post', data, }) +export const PostRefresh = (refreshToken: string) => + request({ + url: `auth/refresh?refreshToken=${refreshToken}`, + method: 'post', + }) diff --git a/src/utils/request/request.ts b/src/utils/request/request.ts index 08648a4..bd981b5 100644 --- a/src/utils/request/request.ts +++ b/src/utils/request/request.ts @@ -1,8 +1,9 @@ import axios, { AxiosInstance, AxiosResponse } from 'axios' import { RequestConfig, RequestInterceptors } from './types' -import { storage } from '@/utils' +import { request, storage } from '@/utils' import { constant } from '@/config' import { message } from 'antd'; +import { PostRefresh } from '@/api/Login'; class Request { // axios实例 instance: AxiosInstance @@ -61,13 +62,22 @@ class Request { }, (err: any) => { function toLogin() { - storage.removeItem('user') - location.href = location.origin + '/#/login' + let user = JSON.parse(storage.getItem('user') as string); + if (user) { + PostRefresh(user.refresh_token).then(res => { + if (res.code == 200) { + storage.setItem('user', JSON.stringify(res.data)) + location.reload() + } + }) + } else { + storage.removeItem('user') + location.href = location.origin + '/#/login' + } } // 根据自己业务/接口返回做相应调整 if (err.response) { const { status } = err.response - message.error(err.message) switch (status) { case 401: toLogin() @@ -75,6 +85,9 @@ class Request { case 403: toLogin() break + default: + message.error(err.message) + break; } } else { message.error(err.message)