fix: 兼容业务层 401 响应码
- 除 HTTP 状态码 401 外,同时处理业务层 code=401 的响应 - 两种 401 均清除登录态并跳转登录页
This commit is contained in:
@@ -12,14 +12,21 @@ const axiosInstance = axios.create({
|
|||||||
|
|
||||||
const handleError = (error: any) => {
|
const handleError = (error: any) => {
|
||||||
|
|
||||||
// 401 未授权:token 过期或未登录,直接跳转登录页
|
// 401 未授权(HTTP 层):token 过期或未登录
|
||||||
if (error?.response?.status === 401) {
|
if (error?.response?.status === 401) {
|
||||||
localStorage.removeItem("isLoggedIn");
|
localStorage.removeItem("isLoggedIn");
|
||||||
router.push("/login");
|
router.push("/login");
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 业务异常由 validateResponse 负责提示,这里透传,避免被网络错误文案覆盖。
|
// 401 未授权(业务层):后端 GlobalExceptionHandler 返回 code=401
|
||||||
|
if (error && typeof error === "object" && error.code === 401) {
|
||||||
|
localStorage.removeItem("isLoggedIn");
|
||||||
|
router.push("/login");
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 其他业务异常(如 code !== 200)透传,由调用方自行提示
|
||||||
if (error && typeof error === "object" && "code" in error && !error.response) {
|
if (error && typeof error === "object" && "code" in error && !error.response) {
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user