refreshToken操作并发控制
This commit is contained in:
parent
a9732790e9
commit
9b3c6083f9
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user