fetch(modify):完善设备管理
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 2m47s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 2m47s
This commit is contained in:
@@ -93,9 +93,9 @@ axiosInstance.interceptors.response.use(
|
||||
const userStore = useUserStore()
|
||||
const originalRequest = response.config as any
|
||||
|
||||
// 如果没有 refreshToken,直接退出登录
|
||||
// 如果没有 refreshToken,直接清理本地状态(不调用退出接口)
|
||||
if (!userStore.refreshToken) {
|
||||
logOut()
|
||||
clearLocalStateAndRedirect()
|
||||
return Promise.reject(response)
|
||||
}
|
||||
|
||||
@@ -140,16 +140,16 @@ axiosInstance.interceptors.response.use(
|
||||
// 重试原请求
|
||||
resolve(axiosInstance.request(originalRequest))
|
||||
} else {
|
||||
// 刷新失败
|
||||
// 刷新失败 - 清理本地状态(不调用退出接口)
|
||||
processQueue(new Error('Token refresh failed'), null)
|
||||
logOut()
|
||||
clearLocalStateAndRedirect()
|
||||
reject(res)
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
// 刷新失败
|
||||
// 刷新失败 - 清理本地状态(不调用退出接口)
|
||||
processQueue(err, null)
|
||||
logOut()
|
||||
clearLocalStateAndRedirect()
|
||||
reject(err)
|
||||
})
|
||||
.finally(() => {
|
||||
@@ -162,7 +162,16 @@ axiosInstance.interceptors.response.use(
|
||||
(error) => {
|
||||
if (axios.isCancel(error)) {
|
||||
console.log('repeated request: ' + error.message)
|
||||
return Promise.reject(error)
|
||||
}
|
||||
|
||||
// 处理 HTTP 401 状态码 - 直接清理本地状态(不调用退出接口)
|
||||
if (error.response && error.response.status === 401) {
|
||||
console.warn('HTTP 401 Unauthorized - 强制退出登录')
|
||||
clearLocalStateAndRedirect()
|
||||
return Promise.reject(error)
|
||||
}
|
||||
|
||||
// 注意:错误处理现在在request函数中根据requestOptions处理
|
||||
return Promise.reject(error)
|
||||
}
|
||||
@@ -270,7 +279,7 @@ const api = {
|
||||
}
|
||||
}
|
||||
|
||||
// 退出登录
|
||||
// 退出登录(调用接口)
|
||||
const logOut = () => {
|
||||
ElMessage.error('登录已过期,请重新登录')
|
||||
setTimeout(() => {
|
||||
@@ -278,4 +287,12 @@ const logOut = () => {
|
||||
}, 1000)
|
||||
}
|
||||
|
||||
// 仅清理本地状态(不调用接口)- 用于401等情况
|
||||
const clearLocalStateAndRedirect = () => {
|
||||
ElMessage.error('登录已过期,请重新登录')
|
||||
setTimeout(() => {
|
||||
useUserStore().clearLocalState()
|
||||
}, 1000)
|
||||
}
|
||||
|
||||
export default api
|
||||
|
||||
Reference in New Issue
Block a user