Skip to content

Commit 429deae

Browse files
committed
fix: 로그인 reissue 로직 수정
- reissue 401에러 시에 진행 안되는 문제 해결
1 parent 7a421df commit 429deae

File tree

3 files changed

+50
-49
lines changed

3 files changed

+50
-49
lines changed

src/apis/auth.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,15 @@ export const deleteUserInfo = async () => {
6363

6464
export const postLogout = async () => {
6565
try {
66+
console.log(' before logout');
67+
6668
const response = await client.post('/api/logout', { withCredentials: true });
69+
console.log('logout', response);
6770
if (!response) throw new Error('postLogout: failed to logout');
6871
return response;
6972
} catch (error) {
73+
console.log('logout error');
74+
7075
console.error(error);
7176
}
7277
};

src/apis/client.ts

Lines changed: 38 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,27 @@ const client = axios.create({
99
headers: { 'Content-Type': 'application/json' },
1010
});
1111

12-
type FailedRequest = {
13-
resolve: (token: string) => void;
14-
reject: (error: unknown) => void;
15-
};
12+
// type FailedRequest = {
13+
// resolve: (token: string) => void;
14+
// reject: (error: unknown) => void;
15+
// };
1616

1717
let isRefreshing = false;
18-
let failedQueue: FailedRequest[] = [];
19-
20-
const processQueue = (error: unknown, token: string | null = null) => {
21-
failedQueue.forEach((prom) => {
22-
if (error) {
23-
prom.reject(error);
24-
} else {
25-
if (token) {
26-
prom.resolve(token);
27-
}
28-
}
29-
});
30-
31-
failedQueue = [];
32-
};
18+
// let failedQueue: FailedRequest[] = [];
19+
20+
// const processQueue = (error: unknown, token: string | null = null) => {
21+
// failedQueue.forEach((prom) => {
22+
// if (error) {
23+
// prom.reject(error);
24+
// } else {
25+
// if (token) {
26+
// prom.resolve(token);
27+
// }
28+
// }
29+
// });
30+
31+
// failedQueue = [];
32+
// };
3333

3434
const callReissue = async () => {
3535
try {
@@ -41,6 +41,7 @@ const callReissue = async () => {
4141
}
4242
};
4343

44+
let retry = false;
4445
client.interceptors.request.use(
4546
(config) => {
4647
console.log('response again', config);
@@ -68,40 +69,34 @@ client.interceptors.response.use(
6869
return Promise.reject(error);
6970
}
7071

71-
if (
72-
(error.response?.status === 401 || error.response?.status === 403) &&
73-
!originalRequest._retry
74-
) {
75-
originalRequest._retry = true;
76-
72+
if ((error.response?.status === 401 || error.response?.status === 403) && !retry) {
7773
if (isRefreshing) {
78-
console.log('request', originalRequest);
79-
console.log('isRefreshing');
80-
console.log('failedQueue', failedQueue);
81-
try {
82-
return new Promise((resolve, reject) => {
83-
failedQueue.push({
84-
resolve: (token: string) => {
85-
originalRequest.headers.Authorization = `Bearer ${token}`;
86-
resolve(client(originalRequest));
87-
},
88-
reject: (err: unknown) => reject(err),
89-
});
90-
});
91-
} catch (e) {
92-
return Promise.reject(e);
93-
}
74+
retry = true;
75+
if (isLoggedIn) logout();
76+
// try {
77+
// return new Promise((resolve, reject) => {
78+
// failedQueue.push({
79+
// resolve: (token: string) => {
80+
// originalRequest.headers.Authorization = `Bearer ${token}`;
81+
// resolve(client(originalRequest));
82+
// },
83+
// reject: (err: unknown) => reject(err),
84+
// });
85+
// });
86+
// } catch (e) {
87+
// return Promise.reject(e);
88+
// }
9489
} else {
9590
isRefreshing = true;
9691
try {
9792
const newToken = await callReissue();
9893
setAccessToken(newToken);
99-
processQueue(null, newToken);
94+
// processQueue(null, newToken);
10095
isRefreshing = false;
10196
originalRequest.headers.Authorization = `Bearer ${newToken}`;
10297
return client(originalRequest);
10398
} catch (e) {
104-
processQueue(e, null);
99+
// processQueue(e, null);
105100
isRefreshing = false;
106101
if (isLoggedIn) logout();
107102
return Promise.reject(e);

src/stores/authStore.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { create } from 'zustand';
22
import { persist, createJSONStorage } from 'zustand/middleware';
33

4-
import { postLogout } from '@/apis/auth';
4+
// import { postLogout } from '@/apis/auth';
55

66
interface AuthStore {
77
isLoggedIn: boolean;
@@ -21,12 +21,13 @@ const useAuthStore = create(
2121
zipCode: '',
2222
login: () => set({ isLoggedIn: true }),
2323
logout: async () => {
24-
try {
25-
await postLogout();
26-
} catch (e) {
27-
console.error(e);
28-
}
2924
set({ isLoggedIn: false, zipCode: '', accessToken: '' });
25+
// location.reload();
26+
// try {
27+
// await postLogout();
28+
// } catch (e) {
29+
// console.error(e);
30+
// }
3031
},
3132
setZipCode: (zipCode) => set({ zipCode: zipCode }),
3233
setAccessToken: (accessToken) => set({ accessToken: accessToken }),

0 commit comments

Comments
 (0)