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

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

@ -30,8 +30,7 @@ export const getAccessToken = async () => {
if (checkTokenExpired(token)) {
//freshtoken 으로 재발급 진행.
const refreshToken = getRefreshToken();
const isRefresh = store.getState()?.authState?.isRefresh;
//const isRefresh = store.getState()?.authState?.isRefresh;
if (refreshToken) {
// if (!store.getState()?.authState?.isRefresh) {
@ -43,7 +42,8 @@ export const getAccessToken = async () => {
cookieStorage.setCookie(COOKIE_REFRESH_TOKEN, '');
}
//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;
// }

22
src/modules/utils/customAxiosUtil.ts

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

Loading…
Cancel
Save