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 {
|
||||
// 若没有刷新能力或没有刷新令牌,则直接走失败逻辑
|
||||
if (!authHandlers?.refreshAccessToken || !authHandlers?.getRefreshToken || !authHandlers.getRefreshToken()) {
|
||||
// 无法刷新,触发认证失败回调并退出
|
||||
try { authHandlers?.onAuthFailure && authHandlers.onAuthFailure(new Error('NO_REFRESH_TOKEN')) } catch {}
|
||||
throw new Error('NO_REFRESH_TOKEN')
|
||||
}
|
||||
|
||||
@ -180,11 +182,18 @@ axiosInstance.interceptors.response.use(
|
||||
// 由请求拦截器负责附加新 Authorization,无需手动改 headers
|
||||
return await axiosInstance.request(config)
|
||||
} catch (refreshErr) {
|
||||
// 刷新失败,返回原始错误信息
|
||||
// 刷新失败,触发认证失败并返回原始错误信息
|
||||
try { authHandlers?.onAuthFailure && authHandlers.onAuthFailure(refreshErr) } catch {}
|
||||
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('设备不存在')) {
|
||||
// 从 headers / url / body 提取 uuid
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user