반응형
package kr.or.noiseinfo.cmmn;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import javax.servlet.http.HttpSession;
/**
* SessionFlagFilter.java
*
* @author
* @since 2018.12.05
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
*
*
* </pre>
*/
public class SessionTimeoutCookieFilter implements Filter {
@SuppressWarnings("unused")
private FilterConfig config;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpResp = (HttpServletResponse) response;
HttpServletRequest httpReq = (HttpServletRequest) request;
long currTime = System.currentTimeMillis();
long expiryTime = currTime + (((HttpServletRequest) request).getSession().getMaxInactiveInterval() * 60000);
Cookie cookie = new Cookie("serverTime", "" + currTime);
cookie.setPath("/");
httpResp.addCookie(cookie);
Cookie cookie2 = new Cookie("sessionExpiry", "" + expiryTime);
// responseWrapper.setHeader("Set-Cookie", "sessionExpiry=" + expiryTime
// + ";Path=/; Secure; HttpOnly");
cookie2.setPath("/");
httpResp.addCookie(cookie2);
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
@Override
public void destroy() {
}
}
층간소음 이웃사이서비스 세션 시간 안내 시, 자바 단 소스.
- HttpServletRequest의 getSession, getMaxInactiveInterval을 사용하여 세션의 최대 비활성 간격을 가져옴
- 서버 사이드 시간과 브라우저의 시간 카운트가 달라서 주기적으로 동기화하기 위해 쿠키 설정.
- 첫 번째 쿠키는 serverTime이라는 이름으로 현재 시간을 저장하고, 두 번째 쿠키는 sessionExpiry라는 이름으로 세션 만료 시간을 저장함.
- 두 쿠키 모두 경로를 "/"로 설정하여 (setPath 사용) 도메인의 모든 페이지에서 사용할 수 있도록 하고, HttpServletResponse 객체 httpResp를 통해 클라이언트에게 전송했음.
반응형
'Programming Language > Java' 카테고리의 다른 글
[Java/maven] Lucy-XSS 교차 사이트 스크립팅 (XSS) 보안 라이브러리 (0) | 2024.05.02 |
---|---|
[Java] (스크랩) maven으로 executable.jar 만들기(maven-jar-plugin, maven-dependency-plugin 이용) (0) | 2024.02.21 |
[Java] 접속 시간과 현재 시간의 차이 구하기 (0) | 2018.12.04 |
[Java] jar 파일 실행 방법 / java -jar (0) | 2018.09.17 |
에러 / Dangling meta character '*' near index 0 (0) | 2018.09.10 |