경남프로젝트 진행 중 대부분의 그룹 포탈이며 기타 업무사항을 진행하는 브라우저가 IE로 확인이 되어 난감한 상황이 종종 발생했다.
(사전에 Edge와 Chrome으로만 지원이 가능하다고는 얘기가 끝난 상태)
하지만 IE로 작업하는 분들이 많이 있다고하니 어쩌겠는가.. Edge로 redirect 해주는것으로 처리하기로 결정
LoginController 에서 요청을 보내주고
login.jsp에서 IE 인지 체크 (header.jsp에서 _isIE 속성 셋팅 해준것을 사용)
다시
window.location = microsoft-edge:https://주소 사용해 edge로 창을 다시열고 setTimeout(function() {window.open("about:blank", "_self").close();},2000);
2초 후 창 자동으로 닫는 부분 추가 ( ++ window.close()를 그냥 하면 동작 안하는 환경이 있을 수 있다고 이렇게 진행하는것을 권장함)
다시 LoginController에서 처리
이 떄 호출 방식이 GET 방식이기에
주소창에 session User Id 를 같이 넘겨야하는데
그냥 User Id를 노출시킨채로 넘기기 애매해서 암호화처리 후 넘기는것으로 처리
여기서 예상치못한 문제 발생
사번을 암호화 해서 response -> redirect 후 다시 request 로 다시 요청을 처리하는과정에서 복호화를 하는데
특정 사번이 암호화 했을때 문자에 "+" 가 들어가면서 재요청 시에 GET방식으로 그냥 주소창에 붙여버렸더니 이 +가 사라지면서 복호화에 문제가 생겼던것..
공교롭게도 접근이 가능한 사번의 경우 특수문자가 들어가지 않았고
접근제어그룹 중 특정 사번이 이런 경우가 있었던것
(로그를 까보기 전엔 접근권한에 관련한 문제가 생긴줄 알았다)
결국 login.jsp 에서 encodingURIComponent로 암호화된 사번을 인코딩 시킨 후 request 처리
(받는쪽에서는 decode 처리를 안해도된다.)
이렇게 처리하니 문제가 사라졌다.
추후 이런 암호화 관련 처리를 조심하자
'오답노트 > BNK' 카테고리의 다른 글
[ORA-01861] - literal match Error TO_CHAR , TO_DATE, LAST_DAY 사용 주의 (1) | 2022.08.29 |
---|---|
시계열 테이블 (0) | 2022.08.05 |
MAX와 KEEP (0) | 2022.08.04 |