This commit is contained in:
caozehui
2025-04-14 14:43:29 +08:00
parent ecec9adeea
commit 30b219e14d
7 changed files with 33 additions and 36 deletions

View File

@@ -76,6 +76,7 @@ class RequestHttp {
userStore.setAccessToken(result.data.accessToken)
userStore.setRefreshToken(result.data.refreshToken)
userStore.setIsRefreshToken(false)
userStore.setExp(1000 * 60 * 60 * 24 * 30)
response.config.headers.Authorization = `Bearer ${result.data.accessToken}`//重新请求前需要将更新后的新token更换掉之前无效的token,不然会死循环
const resp = await this.service.request(response.config)
return resp
@@ -90,6 +91,7 @@ class RequestHttp {
userStore.setRefreshToken('')
userStore.setIsRefreshToken(false)
userStore.setUserInfo({ id:'',name: '' })
userStore.setExp(0)
await router.replace(LOGIN_URL)
if(isFirst){//临时处理token失效弹窗多次
ElMessage.error(data.message)
@@ -112,6 +114,17 @@ class RequestHttp {
return Promise.reject(data)
}
// 成功请求(在页面上除非特殊情况,否则不用处理失败逻辑)
if (userStore.exp <= Date.now() && userStore.exp !== 0) {
userStore.setAccessToken('')
userStore.setRefreshToken('')
userStore.setIsRefreshToken(false)
userStore.setUserInfo({ id:'',name: '' })
userStore.setExp(0)
ElMessage.error('登录已过期,请重新登录!')
await router.replace(LOGIN_URL)
return Promise.reject(data)
}
return data
},
async (error: AxiosError) => {

View File

@@ -11,6 +11,7 @@ export namespace Login {
accessToken: string;
refreshToken: string;
userInfo:{
id: string;
name: string;
}
}

View File

@@ -7,7 +7,7 @@ import type {Dict} from '@/api/interface'
* @name 登录模块
*/
// 用户登录
export const loginApi = (params: { username: string; password: string,checked: boolean }) => {
export const loginApi = (params: { username: string; password: string}) => {
return http.post<Login.ResLogin>(`${rePrefix}/login`, params, {loading: false})
// return http.post<Login.ResLogin>(`/Register1`, params, { loading: false })
}
@@ -47,8 +47,8 @@ export const getCurrentScene = () => {
/**
* 获取RSA公钥
*/
export const getPublicKey = (username: string, checked: boolean) => {
return http.get(`/admin/getPublicKey?username=${username}&checked=${checked}`, {}, {loading: false})
export const getPublicKey = (username: string) => {
return http.get(`/admin/getPublicKey?username=${username}`, {}, {loading: false})
}
/**