feat(api): implement token auto-refresh mechanism and enhance token management
- Add support for proactive token refresh when nearing expiration to improve user experience. - Introduce a refresh lock to prevent concurrent token refresh requests. - Update token handling in API client to ensure valid tokens are used for requests. - Modify authService to handle refresh token requests with improved error handling and response management.
This commit is contained in:
@@ -237,7 +237,14 @@ class AuthService {
|
||||
// 刷新Token
|
||||
async refreshToken(): Promise<RefreshTokenResponse | null> {
|
||||
try {
|
||||
const response = await api.post<RefreshTokenResponse>('/auth/refresh');
|
||||
const refreshToken = await api.getRefreshToken();
|
||||
if (!refreshToken) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const response = await api.post<RefreshTokenResponse>('/auth/refresh', {
|
||||
refresh_token: refreshToken,
|
||||
});
|
||||
|
||||
if (!response.data) {
|
||||
return null;
|
||||
@@ -245,8 +252,9 @@ class AuthService {
|
||||
if (response.data.token) {
|
||||
await api.setToken(response.data.token);
|
||||
}
|
||||
if (response.data.refreshToken) {
|
||||
await api.setRefreshToken(response.data.refreshToken);
|
||||
const newRefreshToken = response.data.refresh_token || response.data.refreshToken;
|
||||
if (newRefreshToken) {
|
||||
await api.setRefreshToken(newRefreshToken);
|
||||
}
|
||||
|
||||
return response.data;
|
||||
|
||||
Reference in New Issue
Block a user