diff --git a/mock/request/index.ts b/mock/request/index.ts index c92613729..acc0ef338 100644 --- a/mock/request/index.ts +++ b/mock/request/index.ts @@ -60,5 +60,16 @@ export default [ data: 'request-5' } } + }, + { + url: '/request/expired', + method: 'get', + timeout: 0, + response: () => { + return { + code: 401, + message: 'token expired' + } + } } ] as MockMethod[] diff --git a/src/api/request/index.ts b/src/api/request/index.ts index 7014505b1..03ae8f119 100644 --- a/src/api/request/index.ts +++ b/src/api/request/index.ts @@ -30,3 +30,9 @@ export const request5 = () => { url: '/request/5' }) } + +export const expired = () => { + return request.get>({ + url: '/request/expired' + }) +} diff --git a/src/config/axios/config.ts b/src/config/axios/config.ts index d0c1f0d24..2a5946fae 100644 --- a/src/config/axios/config.ts +++ b/src/config/axios/config.ts @@ -1,3 +1,4 @@ +import router from '@/router' import { AxiosConfig, AxiosResponse, @@ -6,6 +7,9 @@ import { } from './types' import { ElMessage } from 'element-plus' import qs from 'qs' +import { useStorage } from '@/hooks/web/useStorage' + +const { clear } = useStorage() const config: AxiosConfig = { /** @@ -66,7 +70,12 @@ const defaultResponseInterceptors = (response: AxiosResponse) => { } else if (response.data.code === config.code) { return response.data } else { - ElMessage.error((response as any).message) + ElMessage.error(response?.data?.message) + if (response?.data?.code === 401) { + // token过期 + clear() + router.push('/login') + } } } diff --git a/src/views/Function/Request.vue b/src/views/Function/Request.vue index ec7ac5744..560736f42 100644 --- a/src/views/Function/Request.vue +++ b/src/views/Function/Request.vue @@ -1,8 +1,8 @@