mirror of
https://github.com/ZeroCatDev/ClassworksKVAdmin.git
synced 2025-12-07 18:13:09 +00:00
feat: 添加认证失败回调处理,增强 Token 刷新逻辑
This commit is contained in:
parent
dfa1c0f2f8
commit
95dedb6e29
@ -158,6 +158,8 @@ axiosInstance.interceptors.response.use(
|
|||||||
try {
|
try {
|
||||||
// 若没有刷新能力或没有刷新令牌,则直接走失败逻辑
|
// 若没有刷新能力或没有刷新令牌,则直接走失败逻辑
|
||||||
if (!authHandlers?.refreshAccessToken || !authHandlers?.getRefreshToken || !authHandlers.getRefreshToken()) {
|
if (!authHandlers?.refreshAccessToken || !authHandlers?.getRefreshToken || !authHandlers.getRefreshToken()) {
|
||||||
|
// 无法刷新,触发认证失败回调并退出
|
||||||
|
try { authHandlers?.onAuthFailure && authHandlers.onAuthFailure(new Error('NO_REFRESH_TOKEN')) } catch {}
|
||||||
throw new Error('NO_REFRESH_TOKEN')
|
throw new Error('NO_REFRESH_TOKEN')
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,11 +182,18 @@ axiosInstance.interceptors.response.use(
|
|||||||
// 由请求拦截器负责附加新 Authorization,无需手动改 headers
|
// 由请求拦截器负责附加新 Authorization,无需手动改 headers
|
||||||
return await axiosInstance.request(config)
|
return await axiosInstance.request(config)
|
||||||
} catch (refreshErr) {
|
} catch (refreshErr) {
|
||||||
// 刷新失败,返回原始错误信息
|
// 刷新失败,触发认证失败并返回原始错误信息
|
||||||
|
try { authHandlers?.onAuthFailure && authHandlers.onAuthFailure(refreshErr) } catch {}
|
||||||
return Promise.reject(new Error(message))
|
return Promise.reject(new Error(message))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 明确的权限问题同样触发登出(例如服务端使用 403 表示 Token 无效或权限已失效)
|
||||||
|
if (status === 403) {
|
||||||
|
try { authHandlers?.onAuthFailure && authHandlers.onAuthFailure(new Error(message || 'FORBIDDEN')) } catch {}
|
||||||
|
return Promise.reject(new Error(message || 'FORBIDDEN'))
|
||||||
|
}
|
||||||
|
|
||||||
// 仅在后端提示设备不存在时尝试注册并重试,且保证只重试一次
|
// 仅在后端提示设备不存在时尝试注册并重试,且保证只重试一次
|
||||||
if (!skip && !config.__retriedAfterRegistration && typeof backendMessage === 'string' && backendMessage.startsWith('设备不存在')) {
|
if (!skip && !config.__retriedAfterRegistration && typeof backendMessage === 'string' && backendMessage.startsWith('设备不存在')) {
|
||||||
// 从 headers / url / body 提取 uuid
|
// 从 headers / url / body 提取 uuid
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user