refreshToken操作并发控制

This commit is contained in:
秦秋旭 2023-02-22 17:04:59 +08:00
parent a9732790e9
commit 9b3c6083f9

View File

@ -1,4 +1,5 @@
import axios from '@/utils/axios'
import { type AxiosResponse } from 'axios'
export interface LoginInputDto {
email: string
@ -28,6 +29,13 @@ export async function login(data: LoginInputDto) {
return axios.post<Token>('/api/auth/login', data)
}
let refreshing: Promise<AxiosResponse<Token>> | null
export async function refreshToken(data: TokenRefreshPayload) {
return axios.put<Token>('/api/auth/token', data)
if (!refreshing) {
refreshing = axios.put<Token>('/api/auth/token', data).finally(() => {
refreshing = null
})
}
return refreshing
}