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 axios from '@/utils/axios'
import { type AxiosResponse } from 'axios'
export interface LoginInputDto { export interface LoginInputDto {
email: string email: string
@ -28,6 +29,13 @@ export async function login(data: LoginInputDto) {
return axios.post<Token>('/api/auth/login', data) return axios.post<Token>('/api/auth/login', data)
} }
let refreshing: Promise<AxiosResponse<Token>> | null
export async function refreshToken(data: TokenRefreshPayload) { 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
} }