상황: 파일 다운로드시 세션 체크후 로그아웃 처리
해당 API가 엄청 많았습니다. 로그아웃 처리를 할려고 할때 인터셉터로 로그아웃을 확인합니다.
그러기 위해선 모든 API에 처리가 필요합니다.
상황: 각 API마다 처리가 다른 부분이 많습니다. 공통적으로 처리 해야합니다.
//엑셀 다운
function fn_toExcel(obj) {
//변수 지웠습니다. 감안해주세요
$.fileDownload("/admin/down/toExcel" + obj + "List.do",{
httpMethod : "POST",
data : {
"logInfo": logInfo,
"slelectExcelMemo": slelectExcelMemo,
"head_title" : head_title,
"col_name" : col_name,
"date_type" : date_type,
"from_date" : from_date,
"to_date" : to_date,
"prt_type" : "E"
},
successCallback: function (url) {
//각 API의 상황마다 성공시 처리가 다를수도 있습니다.
},
failCallback: function (responseHtml, url) {
alert("엑셀 다운로드 중 오류가 발생하였습니다.\n담당자에게 문의하시기 바랍니다.");
}
});
return false;
};
<------------------------------------ 수정 방법 ------------------------------------>
1.제가 선택한 방법은 공통 js에 함수를 추가 해서 구현 했습니다.
function fileDownloadCustom(url,options){
$.fileDownload(url,{
httpMethod : options.httpMethod,
data : options.data,
successCallback: function (url) {
options.successCallback(url)
},
failCallback: function (responseHtml, url , error) {
if (responseHtml.indexOf("로그아웃 되었습니다.!") > - 1) {
alert('로그아웃 되었습니다. 다시 로그인 해주세요.');
location.href = '/logout.do';
}else{
options.failCallback(responseHtml, url , error);
}
}
});
}
2. java 인터셉터 구현
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Map<String, Object> adminMap = (Map<String, Object>)request.getSession().getAttribute("adminMap");
if(adminMap == null){
response.setContentType("text/html; charset=UTF-8");
response.getWriter().write("로그아웃 되었습니다.!");
return false;
}
return ture;
};
3. 모든 $.fileDownload >> 값을 제가 구현함 함수 fileDownloadCustom로 변경 해주었습니다.
이방법은 성공처리,실패 처리는 동일 하지만 세션으로 체크 로그아웃 처리 할수 있습니다.
처리 결과 >> $.fileDownload 값을 fileDownloadCustom로 변경
//기존 API 변경 공통함수 처리
function fn_toExcel(obj) {
//변수 지웠습니다. 감안해주세요
fileDownloadCustom("/admin/down/toExcel" + obj + "List.do",{
httpMethod : "POST",
data : {
"logInfo": logInfo,
"slelectExcelMemo": slelectExcelMemo,
"head_title" : head_title,
"col_name" : col_name,
"date_type" : date_type,
"from_date" : from_date,
"to_date" : to_date,
"prt_type" : "E"
},
successCallback: function (url) {
//각 API의 상황마다 성공시 처리가 다를수도 있습니다.
},
failCallback: function (responseHtml, url) {
alert("엑셀 다운로드 중 오류가 발생하였습니다.\n담당자에게 문의하시기 바랍니다.");
}
});
};
요약
1. 공통함수 구현
2.인터셉터 리턴처리
2. 공통함수로 이름 변경
다음엔 모든 API진행중 JWT토큰의 Access Token값이 만료가 되고 Refresh Token값이 만료가 되어 있지 않을 경우 다시 Access Token의 값을 업데이트후 다시 API실행 , 둘다 만료시 로그아웃 진행에 대해 작업 하겠습니다.
'JS > jquery' 카테고리의 다른 글
ajaxSetup모든 ajax API 관리 (0) | 2022.11.16 |
---|---|
radio,select 박스 체크하기 (0) | 2022.03.21 |