perf: 新增token过期示例

This commit is contained in:
kailong321200875 2023-11-17 09:07:53 +08:00
parent a7ef722823
commit bdc8d358a1
4 changed files with 35 additions and 3 deletions

View File

@ -60,5 +60,16 @@ export default [
data: 'request-5' data: 'request-5'
} }
} }
},
{
url: '/request/expired',
method: 'get',
timeout: 0,
response: () => {
return {
code: 401,
message: 'token expired'
}
}
} }
] as MockMethod[] ] as MockMethod[]

View File

@ -30,3 +30,9 @@ export const request5 = () => {
url: '/request/5' url: '/request/5'
}) })
} }
export const expired = () => {
return request.get<IResponse<RequestResponse>>({
url: '/request/expired'
})
}

View File

@ -1,3 +1,4 @@
import router from '@/router'
import { import {
AxiosConfig, AxiosConfig,
AxiosResponse, AxiosResponse,
@ -6,6 +7,9 @@ import {
} from './types' } from './types'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import qs from 'qs' import qs from 'qs'
import { useStorage } from '@/hooks/web/useStorage'
const { clear } = useStorage()
const config: AxiosConfig = { const config: AxiosConfig = {
/** /**
@ -66,7 +70,12 @@ const defaultResponseInterceptors = (response: AxiosResponse<any>) => {
} else if (response.data.code === config.code) { } else if (response.data.code === config.code) {
return response.data return response.data
} else { } else {
ElMessage.error((response as any).message) ElMessage.error(response?.data?.message)
if (response?.data?.code === 401) {
// token过期
clear()
router.push('/login')
}
} }
} }

View File

@ -1,8 +1,8 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ContentWrap } from '@/components/ContentWrap' import { ContentWrap } from '@/components/ContentWrap'
import { useI18n } from '@/hooks/web/useI18n' import { useI18n } from '@/hooks/web/useI18n'
import { ElButton } from 'element-plus' import { ElButton, ElDivider } from 'element-plus'
import { request1, request2, request3, request4, request5 } from '@/api/request' import { request1, request2, request3, request4, request5, expired } from '@/api/request'
import { ref } from 'vue' import { ref } from 'vue'
import request from '@/config/axios' import request from '@/config/axios'
@ -151,6 +151,10 @@ const clickRequest5 = () => {
} }
getRequest5() getRequest5()
} }
const tokenExpired = () => {
expired()
}
</script> </script>
<template> <template>
@ -163,5 +167,7 @@ const clickRequest5 = () => {
<ElButton type="primary" @click="clickRequest5">请求/取消request5</ElButton> <ElButton type="primary" @click="clickRequest5">请求/取消request5</ElButton>
<ElButton type="primary" @click="getAll">发送五个请求</ElButton> <ElButton type="primary" @click="getAll">发送五个请求</ElButton>
<ElButton type="primary" @click="cancelAll">关闭所有请求</ElButton> <ElButton type="primary" @click="cancelAll">关闭所有请求</ElButton>
<ElDivider />
<ElButton type="primary" @click="tokenExpired">token过期</ElButton>
</ContentWrap> </ContentWrap>
</template> </template>