From 0bc21ff07921e2f2d7a932be1c50424498ce41d9 Mon Sep 17 00:00:00 2001 From: HeeSeok-kim Date: Sat, 10 Feb 2024 11:07:29 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EB=A6=AC=ED=94=84=EB=A0=88=EC=8B=9C=20?= =?UTF-8?q?=ED=86=A0=ED=81=B0=EC=9D=84=203=EB=B2=88=20=EC=9A=94=EC=B2=AD?= =?UTF-8?q?=20=ED=9B=84=20=EA=B1=B0=EC=A0=88=EB=90=AC=EC=9D=84=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=ED=86=A0=ED=81=B0=EC=9D=84=20=EC=82=AD=EC=A0=9C=20?= =?UTF-8?q?=ED=9B=84=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libs/api/index.ts | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/libs/api/index.ts b/src/libs/api/index.ts index 90a4a809..7ef99f39 100644 --- a/src/libs/api/index.ts +++ b/src/libs/api/index.ts @@ -31,21 +31,36 @@ request.interceptors.response.use( return res }, async (error) => { + if (!error.config.retryCount) { + // 요청에 재시도 횟수를 추적하는 속성이 없으면 초기화 + error.config.retryCount = 0 + } + if (error.response.status === 403) { const { setToast } = useToastify() + try { + error.config.retryCount += 1 + if (error.config.retryCount >= 3) { + throw new Error('예외 발생!') + } const getRefreshToken = await refreshApi() const prevRequest = error.config prevRequest.headers.Authorization = `Bearer ${getRefreshToken.appToken}` setItem('token', getRefreshToken.appToken) return request(prevRequest) } catch { - setToast({ - comment: '로그인을 다시 진행해주세요.', - type: 'info' - }) - await logoutApi() - throw new Error('failed to request refresh token') + if (error.config.retryCount >= 3) { + window.location.href = '/login' + localStorage.removeItem('token') + } else { + setToast({ + comment: '로그인을 다시 진행해주세요.', + type: 'info' + }) + await logoutApi() + throw new Error('failed to request refresh token') + } } } }