티스토리 뷰
[JS] axios interceptors 를 이용해 token만료시 refreshToken 요청하기.
안녕하세요. 이번 포스팅에서는, token이 만료됐을 때 refreshToken을 자동으로 요청 하기 위한
axios interceptors 설정에 대해 알아보겠습니다.
과정
- 요청성공시
- return
- 요청실패시 ( 토큰 만료로 인한 에러 발생시)
- 에러를 반환하기 전에 interceptor 해서, 서버에 token refresh를 요청합니다.
- token refresh요청을 통해 받은 새로운 accessToken을 ReduxStore등 본인이 이용하는 저장소에 저장합니다.
- 새로운 accessToken을 header에 담아, 재요청합니다.
- 코드 예시
axios.interceptors.response.use(
response => {
return response;
},
async error => {
const {
config,
response: {status},
} = error;
if (status === 419) {
if (error.response.data.code === 'expired') {
const originalRequest = config;
const refreshToken = await EncryptedStorage.getItem('refreshToken');
// token refresh 요청
const {data} = await axios.post(
`${Config.API_URL}/refreshToken`, // token refresh api
{},
{headers: {authorization: `Bearer ${refreshToken}`}},
);
// 새로운 토큰 저장
dispatch(userSlice.actions.setAccessToken(data.data.accessToken));
originalRequest.headers.authorization = `Bearer ${data.data.accessToken}`;
// 419로 요청 실패했던 요청 새로운 토큰으로 재요청
return axios(originalRequest);
}
}
return Promise.reject(error);
},
);
'개발일기 > JS' 카테고리의 다른 글
[Javascript] concat vs spread-operator 성능 비교 (0) | 2022.12.20 |
---|---|
[JS] Javascript padStart , padEnd 사용해서 빈자릿수 채우기. (0) | 2022.05.28 |
[JS] axios interceptor로 authorization header 설정하는 방법. (0) | 2022.03.29 |
[JS] axios interceptor 를 이용해서 요청,응답 커스터마이징 하는 방법 (0) | 2022.03.27 |
[JS] JAVASCRIPT 배열 초기화하는 방법 (0) | 2022.03.06 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 모두CBT
- 게더타운맵
- nextjs
- 전기기사
- JavaScript
- 전기기기
- 산업안전기사
- 전기기사필기
- React
- 전기기사실기단답
- 전기기사실기CBT
- TS
- TypeScript
- shortid
- 전기공사기사
- 전기기사 필기
- 실기CBT
- fakerjs
- 전력공학
- 산업안전기사 실기
- dummydata
- cbt
- zep
- gathertown
- KEC반영
- 산안기 합격률
- 게더타운
- 전기산업기사
- 전자기학
- 개더타운
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함