Skip to content

Commit 23ee655

Browse files
authored
Merge pull request #137 from DDD-Community/feat/#133
feat: 401 에러일 때, 강제로 로그아웃 되도록 구현
2 parents 6dc1617 + 61ed855 commit 23ee655

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

src/api/auth.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// src/api/auth.ts
2-
import axiosInstance, { setAccessToken } from "@/api/axiosInstance"
2+
import { setAccessToken, kakaoAxios } from "@/api/axiosInstance"
33
import qs from "qs"
44

55
const REST_API_KEY = import.meta.env.VITE_OAUTH_KAKAO_REST_API_KEY
@@ -26,7 +26,7 @@ export const oauth = async (code: string): Promise<string> => {
2626
}
2727

2828
try {
29-
const res = await axiosInstance.post(`https://kauth.kakao.com/oauth/token?${qs.stringify(formData)}`, null, {
29+
const res = await kakaoAxios.post(`https://kauth.kakao.com/oauth/token?${qs.stringify(formData)}`, null, {
3030
headers: { "Content-type": "application/x-www-form-urlencoded" },
3131
})
3232
return res.data.access_token
@@ -36,7 +36,7 @@ export const oauth = async (code: string): Promise<string> => {
3636
}
3737

3838
export const getOauthUser = async (accessToken: string): Promise<oauthUser> => {
39-
const kakaoUser = await axiosInstance.get(`https://kapi.kakao.com/v2/user/me`, {
39+
const kakaoUser = await kakaoAxios.get(`https://kapi.kakao.com/v2/user/me`, {
4040
headers: {
4141
Authorization: `Bearer ${accessToken}`,
4242
},
@@ -48,7 +48,7 @@ export const getOauthUser = async (accessToken: string): Promise<oauthUser> => {
4848

4949
export const signIn = async (_accessToken: string): Promise<authUser> => {
5050
try {
51-
const res = await axiosInstance.post(`/oauth/kakao/sign-in`, { accessToken: _accessToken })
51+
const res = await kakaoAxios.post(`/oauth/kakao/sign-in`, { accessToken: _accessToken })
5252
const { uid, nickname, accessToken } = res.data.data
5353

5454
// 로그인 성공 후 엑세스 토큰을 설정
@@ -62,7 +62,7 @@ export const signIn = async (_accessToken: string): Promise<authUser> => {
6262

6363
export const signUp = async (_accessToken: string): Promise<authUser> => {
6464
try {
65-
const res = await axiosInstance.post(`/oauth/kakao/sign-up`, { accessToken: _accessToken })
65+
const res = await kakaoAxios.post(`/oauth/kakao/sign-up`, { accessToken: _accessToken })
6666
const { uid, nickname, accessToken } = res.data.data
6767

6868
// 회원가입 성공 후 엑세스 토큰을 설정
@@ -76,7 +76,7 @@ export const signUp = async (_accessToken: string): Promise<authUser> => {
7676

7777
export const getIsSignUp = async (accessToken: string): Promise<boolean> => {
7878
try {
79-
const res = await axiosInstance.get(`/oauth/kakao/sign-up/check`, {
79+
const res = await kakaoAxios.get(`/oauth/kakao/sign-up/check`, {
8080
params: { accessToken },
8181
})
8282
console.log(res.data)

src/api/axiosInstance.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// src/services/axiosInstance.ts
2-
import axios from "axios"
2+
import { useAuthStore } from "@/store/AuthStore"
3+
import axios, { AxiosError } from "axios"
34

45
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL
56
const EXCEPT_HEADER_API = ["/token", "/user/me", "/oauth"]
@@ -11,6 +12,13 @@ const axiosInstance = axios.create({
1112
},
1213
})
1314

15+
const kakaoAxios = axios.create({
16+
baseURL: API_BASE_URL,
17+
headers: {
18+
"Content-Type": "application/json",
19+
},
20+
})
21+
1422
// 요청 인터셉터 설정
1523
axiosInstance.interceptors.request.use((config) => {
1624
// 특정 API 경로에 대해 토큰을 제거
@@ -23,6 +31,20 @@ axiosInstance.interceptors.request.use((config) => {
2331
return config
2432
})
2533

34+
axiosInstance.interceptors.response.use(
35+
(response) => {
36+
return response
37+
},
38+
async (error: AxiosError) => {
39+
if (error.response?.status === 401) {
40+
useAuthStore.getState().logout(() => {
41+
clearAccessToken()
42+
window.location.href = "/"
43+
})
44+
}
45+
}
46+
)
47+
2648
// localStorage에서 토큰 가져오기
2749
const token = localStorage.getItem("accessToken")
2850
if (token) {
@@ -41,4 +63,5 @@ export const clearAccessToken = (): void => {
4163
localStorage.removeItem("accessToken")
4264
}
4365

66+
export { kakaoAxios }
4467
export default axiosInstance

0 commit comments

Comments
 (0)