HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
프로그래머스 프론트엔드 데브코스 2기
프로그래머스 프론트엔드 데브코스 2기
/
😻
지은팀
/
🔜
FE - 최종 프로젝트
/
🪙
JWT access / refresh token
🪙

JWT access / refresh token

태그

기동 멘토님의 게릴라 강의

const axios = Axios.create({ baseURL: API_HOST, }); // NOTE: 요청 인터셉터 추가 axios.interceptors.request.use((config: AxiosRequestConfig) => { return refresh(config, dispatch, actions, store); }, refreshErrorHandle);
import { Action, Actions, Store } from 'contexts/App'; import axios, { AxiosRequestConfig } from 'axios'; import { API_HOST } from 'constants/Api'; import moment from 'moment'; const refresh = async ( config: AxiosRequestConfig, dispatch: React.Dispatch<Action>, actions: Actions, store: Store ) => { const refreshToken = store.RefreshToken; const expireAt = store.ExpiresAt; let token = store.Authorization; // 토큰이 만료되었고, refreshToken 이 저장되어 있을 때 if (moment(expireAt).diff(moment()) < 0 && refreshToken) { const body = { refresh: refreshToken, }; // 토큰 갱신 서버통신 const { data } = await axios.post(`${API_HOST}/users/token/refresh/`, body); token = data.access; dispatch(actions.setToken(data.access, data.refresh)); } if (!!token) { config.headers['Authorization'] = `JWT ${token}`; } return config; }; const refreshErrorHandle = (err: any) => { // Cookie.remove("refreshToken"); }; export { refresh, refreshErrorHandle };