처음에 상사의 지시로 모든 API에 해더 값을 추가 할수 있는지에 대해 알아 보았습니다.
ajaxSetup을 찾게 되어 모든 해더에 추가를 할수가 있었습니니다.
$.ajaxSetup({
headers: {
'pageUrlInfo' : location.href
},
});
많은 상황에서 세션값이 없어져서 특정 포인트에서 에러가 나와서 결국 모든 API에 세션 체크후 로그 아웃 페이지로 이동 시키는 API를 추가 했습니다.
상황: API수가 너무 많습니다. 위에 API에 일일 리턴처리로 홈으로 보내는 방법은 너무 시간적 요소가 큽니다.
많은 시간과 노력끝에 공식문서를 참조해서 찾았습니다. 모든 데이터는 ajaxSetup에 중간에서 필터하는 API값이 있었습니다.
https://api.jquery.com/jquery.ajax/
1. 모든 API를 통틀어 intersetor를 통해 세션 체크를 구현 합니다.
java
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
try {
Map<String, Object> adminMap = (Map<String, Object>)request.getSession().getAttribute("adminMap");
String adminId = (String) request.getSession().getAttribute("adminId");
if(adminId == null){
String sesstionMsg ="로그아웃 되었습니다. 다시 로그인 해주세요";
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<script>alert('" + sesstionMsg + "');</script>");
out.println("<script> location.href='/index.do' </script>");
out.flush();
out.close();
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
2. 해당 API에서 리턴값으로 모든 Ajax의 중간 필터 값을 처리 합니다.
dataFilter의 함수를 활용하여 처리 하였습니다.
$.ajaxSetup({
cache: true,
dataType: 'json',
timeout: 60000,
type: 'POST',
async: false,
error: function(xhr, status, error){
alert('An error occurred: ' + error);
},
dataFilter:function(data ) {
if (data.indexOf("로그아웃 되었습니다. 다시 로그인 해주세요") > - 1) {
alert('로그아웃 되었습니다. 다시 로그인 해주세요.');
setTimeout(function () {
location.href = '/logout.do';
}, 300);
throw "로그아웃";
}
return data;
}
});
<--------------------------------- 끝 ------------------------------------------>
'JS > jquery' 카테고리의 다른 글
fileDownload 세션 체크 로그아웃 처리 (0) | 2022.11.18 |
---|---|
radio,select 박스 체크하기 (0) | 2022.03.21 |