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