로그인 시간관리

개요

로그인후 만료시간까지의 남은 시간을 표시한다.

설명

세션에 객체 정보 저장, 취득, 제거의 기능을 갖으며 HttpServletRequest 객체의 HttpSession 정보를 사용하여 처리된다.

관련소스
유형대상소스설명비고
Filteregovframework.com.cmm.filter.SessionTimeoutCookieFilter.java시간관리 필터
Controlleregovframework.com.cmm.web.EgovComIndexController.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시간

    <session-config>
        <session-timeout>60</session-timeout>
    </session-config>
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");
 
    .... 중략 ....

사용방법

쿠키로부터 만료 예정시간(egovLatestServerTime), 서버현재시간(egovExpireSessionTime)을 구하여 그 차이를 계산하여 로그인 남은 시간을 표시한다.

 
<script type="text/javaScript">
 
	var objLeftTime;
	var objClickInfo;
	var latestTime;
	var expireTime;
	var timeInterval = 1000; // 1초 간격 호출
	var firstLocalTime = 0;
	var elapsedLocalTime = 0;
	var stateExpiredTime = false;
	var logoutUrl = "<c:url value='/uat/uia/actionLogout.do'/>";
	var timer;
 
	function init() {
		objLeftTime = document.getElementById("leftTimeInfo");
 
		if (objLeftTime == null) {
			console.log("'leftTimeInfo' ID is not exist!");
			return;
		}
		objClickInfo = document.getElementById("clickInfo");
		//console.log(objLeftTime.textContent);
 
		latestTime = getCookie("egovLatestServerTime");
		expireTime = getCookie("egovExpireSessionTime");
		//console.log("latestServerTime = "+latestTime);
		//console.log("expireSessionTime = "+expireTime);
 
		elapsedTime = 0;
		firstLocalTime = (new Date()).getTime();
		showRemaining();
 
		timer = setInterval(showRemaining, timeInterval); // 1초 간격 호출
	}

참고자료

 
egovframework/com/v3.9/sec/login_session_management.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki