import authService from '../service/authService' import jwt from '../service/jwt' //참조: https://www.bezkoder.com/vue-refresh-token/ const setup = (store) => { //API Request 전 처리용 authService.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded' //Request 처리용 authService.interceptors.request.use( (config) => jwt.getAuthorizationHeader(config), (error) => { // Do something with request error Promise.reject(error) } ) //Response 처리용 authService.interceptors.response.use( (res) => { console.log('AuthService Call 성공=>' + res) return res }, async (err) => { // Do something with response error const originalConfig = err.config if (originalConfig.url !== '/auth/login' && err.response) { // Access Token이 expired,오류로 인한 response 401 답볍을 받은경우 if (err.response.status === 401 && !originalConfig._retry) { originalConfig._retry = true try { //Refresh Token으로 다시 Access Token 재생성 후 로그인 다시하라고 오류보냄 const rs = await authService.post('/auth/reload', { refresh_token: jwt.getRefreshToken() }) const { access_token } = rs.data store.dispatch('auth/reload', access_token) return authService(originalConfig) } catch (_error) { return Promise.reject(_error) } } //401처리 } Promise.reject(err.response.data.message) } ) } export default { setup }