Browse Source

토큰 만료시 refreshToken 갱신 기능 수정

pull/2/head
박상현 11 months ago
parent
commit
3ea419a78f
  1. 2
      src/modules/account/login/apis/authApi.ts
  2. 37
      src/modules/account/login/sagas/authSaga.ts
  3. 6
      src/modules/account/login/service/jwtTokenUtil.ts
  4. 22
      src/modules/utils/customAxiosUtil.ts

2
src/modules/account/login/apis/authApi.ts

@ -8,8 +8,6 @@ import {
UpdateData UpdateData
} from '../models/authModel'; } from '../models/authModel';
import qs from 'qs';
export const authAPI = { export const authAPI = {
usersLogin: async (data: UserAccount) => { usersLogin: async (data: UserAccount) => {
return await axios.post('api/acnt/jwt/login', data); return await axios.post('api/acnt/jwt/login', data);

37
src/modules/account/login/sagas/authSaga.ts

@ -5,12 +5,7 @@ import { call, put, takeEvery } from 'redux-saga/effects';
// packages // packages
import { ActionType } from 'typesafe-actions'; import { ActionType } from 'typesafe-actions';
// modules // modules
import { import { ERROR_MESSAGE, SAVE_MESSAGE } from '../../../../configs/constants';
DELETE_MESSAGE,
DUPLATE_MESSAGE,
ERROR_MESSAGE,
SAVE_MESSAGE
} from '../../../../configs/constants';
import * as Actions from '../actions/authAction'; import * as Actions from '../actions/authAction';
import { authAPI } from '../apis/authApi'; import { authAPI } from '../apis/authApi';
import { LoginData } from '../models/authModel'; import { LoginData } from '../models/authModel';
@ -20,7 +15,6 @@ import {
COOKIE_REFRESH_TOKEN COOKIE_REFRESH_TOKEN
} from '../service/cookie'; } from '../service/cookie';
import * as MessageActions from '../../../comn/message/actions/comnMessageAction'; import * as MessageActions from '../../../comn/message/actions/comnMessageAction';
import { Console } from 'console';
function* userLoginSaga(action: ActionType<typeof Actions.login.request>) { function* userLoginSaga(action: ActionType<typeof Actions.login.request>) {
const param = action.payload; const param = action.payload;
@ -57,22 +51,25 @@ function* userLoginSaga(action: ActionType<typeof Actions.login.request>) {
} }
} }
function* refreshTokenSaga(action: ActionType<typeof Actions.refresh.request>) { // function* refreshTokenSaga(action: ActionType<typeof Actions.refresh.request>) {
const param = action.payload; // const param = action.payload;
try { // cookieStorage.removeCookie(COOKIE_ACCESS_TOKEN);
const { data, errorCode } = yield call(authAPI.refreshToken, param); // cookieStorage.removeCookie(COOKIE_REFRESH_TOKEN);
// try {
// const { data, errorCode } = yield call(authAPI.refreshToken, param);
// access_token 세팅 // console.log('token>>>', data);
cookieStorage.setCookie(COOKIE_ACCESS_TOKEN, data.accessToken); // // access_token 세팅
cookieStorage.setCookie(COOKIE_REFRESH_TOKEN, data.refreshToken); // cookieStorage.setCookie(COOKIE_ACCESS_TOKEN, data.accessToken);
// cookieStorage.setCookie(COOKIE_REFRESH_TOKEN, data.refreshToken);
const user = yield call(authAPI.getUserProfile, data.cstmrSno); // const user = yield call(authAPI.getUserProfile, data.cstmrSno);
yield put(Actions.check.success({ ...user.data })); // yield put(Actions.check.success({ ...user.data }));
} catch (error) { // } catch (error) {
yield put(Actions.check.failure(error)); // yield put(Actions.check.failure(error));
} // }
} // }
function* checkAuthencationSaga() { function* checkAuthencationSaga() {
try { try {

6
src/modules/account/login/service/jwtTokenUtil.ts

@ -30,8 +30,7 @@ export const getAccessToken = async () => {
if (checkTokenExpired(token)) { if (checkTokenExpired(token)) {
//freshtoken 으로 재발급 진행. //freshtoken 으로 재발급 진행.
const refreshToken = getRefreshToken(); const refreshToken = getRefreshToken();
//const isRefresh = store.getState()?.authState?.isRefresh;
const isRefresh = store.getState()?.authState?.isRefresh;
if (refreshToken) { if (refreshToken) {
// if (!store.getState()?.authState?.isRefresh) { // if (!store.getState()?.authState?.isRefresh) {
@ -43,7 +42,8 @@ export const getAccessToken = async () => {
cookieStorage.setCookie(COOKIE_REFRESH_TOKEN, ''); cookieStorage.setCookie(COOKIE_REFRESH_TOKEN, '');
} }
//REFHRESTH 토큰 넣기 //REFHRESTH 토큰 넣기
cookieStorage.setCookie(COOKIE_ACCESS_TOKEN, data.refreshToken); cookieStorage.setCookie(COOKIE_ACCESS_TOKEN, data.accessToken);
cookieStorage.setCookie(COOKIE_REFRESH_TOKEN, data.refreshToken);
token = data.refreshToken; token = data.refreshToken;
// } // }

22
src/modules/utils/customAxiosUtil.ts

@ -1,6 +1,5 @@
import axios from 'axios'; import axios from 'axios';
import { HOST } from '../../configs/constants'; import { HOST } from '../../configs/constants';
import * as Actions from '../../modules/account/login/actions/authAction';
import { getAccessToken } from '../account/login/service/jwtTokenUtil'; import { getAccessToken } from '../account/login/service/jwtTokenUtil';
import { store } from './../../redux/storeConfig/store'; import { store } from './../../redux/storeConfig/store';
import { GLOBAL_LOADED, GLOBAL_LOADING } from '../../redux/reducers/loading'; import { GLOBAL_LOADED, GLOBAL_LOADING } from '../../redux/reducers/loading';
@ -40,16 +39,21 @@ clientInstance.interceptors.response.use(
return response.data; return response.data;
}, },
error => { error => {
const message = error?.message || ''; // const message = error?.message || '';
const name = error?.name || ''; // const name = error?.name || '';
if (error?.response?.status == 401) { // if (error?.response?.status == 401) {
// alert('인증정보가 없습니다. 다시 로그인해 주세요.'); // let refreshToken = await refreshTokenAPI(userData.cstmrSno,getRefreshToken());
// window.location.href = '/account/login'; // store.dispatch(
store.dispatch(Actions.logout.request()); // Actions.refresh.request({
} else { // cstmrSno: userData.cstmrSno,
} // refreshToken: getRefreshToken()
// })
// );
//store.dispatch(Actions.logout.request());
// } else {
// }
return Promise.reject(error); return Promise.reject(error);
} }

Loading…
Cancel
Save