====== 로그인 시간관리 ====== ===== 개요 ===== 로그인후 만료시간까지의 남은 시간을 표시한다. ===== 설명 ===== 세션에 객체 정보 저장, 취득, 제거의 기능을 갖으며 HttpServletRequest 객체의 HttpSession 정보를 사용하여 처리된다. ==== 관련소스 ==== ^유형^대상소스^설명^비고^ |Filter|egovframework.com.cmm.filter.SessionTimeoutCookieFilter.java|시간관리 필터 | | |Controller|egovframework.com.cmm.web.EgovComIndexController.java|상단프레임 Controller |시간관리 표시 | | Controller | egovframework.com.uat.uia.web.EgovLoginController.java | 로그인시간 연장 Controller | 시간연장 | |JSP|/WEB-INF/jsp/egovframework/com/cmm/EgovUnitTop.jsp|상단프레임 페이지|시간관리 표시 | ==== 필터 쿠키값 설정 ==== ^쿠키명^변수타입^설명^내용^ |egovLatestServerTime |long |서버의 최근 시간 |시스템의 최근 시간을 밀리초 단위의 Epoch시간(Unix time, POSIX time)으로 기록한다. | |egovExpireSessionTime |long |세션 객체 생성 |HttpSession에서 만료 시간을 밀리초 단위의 Epoch시간(Unix time, POSIX time)으로 기록한다. | ==== Output ==== * String, long : 필터를 통해 쿠키명(String)에 값(long)형태로 저장된다. ===== 환경설정 ===== 세션 만료 시간을 적절하게 설정하여야 한다. \\ 너무 짧으면 사용시 불편을 초래할수 있고, 너무 길면 보안상 좋지 않으며 서버에 세션정보가 누적되어 성능저하나 오동작을 유발할수 있다. ==== web.xml 설정 ==== 서버의 세션타임아웃 시간을 설정한다. 분 단위는 기재한다. ex) 60 = 1시간 , 600 = 10시간 60 ==== SessionTimeoutCookieFilter 설정 ==== EgovWebApplicationInitializer.java 파일에 다음 코드를 추가하여 Filter를 설정한다. import egovframework.com.cmm.filter.SessionTimeoutCookieFilter; public class EgovWebApplicationInitializer implements WebApplicationInitializer { private static final Logger LOGGER = LoggerFactory.getLogger(EgovWebApplicationInitializer.class); @Override public void onStartup(ServletContext servletContext) throws ServletException { .... 중략 .... FilterRegistration.Dynamic sessionTimeoutFilter = servletContext.addFilter("sessionTimeoutFilter", new SessionTimeoutCookieFilter()); sessionTimeoutFilter.addMappingForUrlPatterns(null, false, "*.do"); .... 중략 .... ===== 사용방법 ===== ==== 로그인 시간관리 시간연장 ==== === 비즈니스 규칙 === 회원가입시 또는 비밀번호 변경시 비밀번호 수정날짜가 관리된다. \\ 비밀번호 수정날짜에서 특정한 시일이 경과하면 비밀번호 만료에 대한 안내 팝업을 출력하여 비밀번호 변경을 유도한다. === 관련코드 === /** * 세션타임아웃 시간을 연장한다. * Cookie에 egovLatestServerTime, egovExpireSessionTime 기록하도록 한다. * @return result - String * @exception Exception */ @RequestMapping(value="/uat/uia/refreshSessionTimeout.do") public ModelAndView refreshSessionTimeout(@RequestParam Map commandMap) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); modelAndView.addObject("result", "ok"); return modelAndView; } === 관련화면 및 수행매뉴얼 === ^Action^URL^Controller method^SQL Namespace^SQL QueryID^ | 로그인 시간연장 | /uat/uia/refreshSessionTimeout.do | refreshSessionTimeout| | | ==== 로그인 시간관리 남은시간 표시 ==== 쿠키로부터 만료 예정시간(egovLatestServerTime), 서버현재시간(egovExpireSessionTime)을 구하여 그 차이를 계산하여 로그인 남은 시간을 표시한다. === 관련코드 ===