本文檔說(shuō)明了如何確保最新的Token自動(dòng)應用到所有API請求中的完整機制。
updateTokenForAllRequests(newTokenData)
// 使用示例
userStore.updateTokenForAllRequests(newTokenData);
refreshAndUpdateToken()
api/auth/GetUserInfo
// 刷新Token示例
await userStore.refreshAndUpdateToken();
graph TD
A[用戶(hù)登錄/Token更新] --> B[調用updateTokenForAllRequests]
B --> C[更新主Token]
B --> D[更新小七Token]
B --> E[更新緩存Token]
B --> F[更新認證信息]
C --> G[HTTP請求攔截器自動(dòng)使用新Token]
D --> G
E --> G
F --> G
G --> H[所有API請求攜帶最新Token]
src/utils/request/index.ts
)requestInterceptors: (config, options) => {
const userStore = useUserStore();
// ?? 自動(dòng)獲取最新Token
const { token, xiaoqiToken, authInfo } = userStore;
// ?? 智能Token選擇
let authToken = token;
const url = config.url || '';
if (url.includes('/xiaoqi/')) {
authToken = xiaoqiToken || token;
}
// ?? 自動(dòng)應用到請求頭
headers.Authorization = `Bearer ${finalToken}`;
}
// 登錄成功后自動(dòng)更新所有API請求的Token
const handleLogin = async (loginForm) => {
await userStore.login(loginForm);
// ? Token已自動(dòng)應用到所有后續API請求
};
// Token即將過(guò)期時(shí)自動(dòng)刷新
const checkAndRefreshToken = async () => {
if (userStore.isTokenExpired) {
await userStore.refreshToken();
// ? 新Token已自動(dòng)應用到所有API請求
}
};
// 手動(dòng)獲取最新Token并應用
const updateToken = async () => {
await userStore.refreshAndUpdateToken();
// ? 最新Token已應用到所有API請求
};
更新Token時(shí)會(huì )自動(dòng)輸出詳細日志:
? Token已更新并將應用到所有API請求
?? 新Token信息: {
hasMainToken: true,
hasXiaoqiToken: true,
hasCacheToken: true,
tokenPreview: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
persist: {
paths: [
'token', // ? 主Token持久化
'xiaoqiToken', // ? 小七Token持久化
'cacheXiaoqiToken', // ? 緩存Token持久化
'authInfo' // ? 認證信息持久化
]
}
現在您的系統具備了完整的Token自動(dòng)更新機制,確保所有API請求都使用最新的認證憑證!