복붙노트

[SPRING] Spring 3 / Spring Security 2.0.5에서 세션 시간 초과 감지

SPRING

Spring 3 / Spring Security 2.0.5에서 세션 시간 초과 감지

SpringSecurity 2.0.5와 함께 Spring 3에서 실행되는 웹 응용 프로그램이 있습니다. 마지막 방문 이후 사이트 변경 사항을 사용자에게 알리기 위해 세션이 삭제 된 시간을 등록하려고합니다. 그래서 org.springframework.context.ApplicationListener 와 javax.servlet.http.HttpSessionListener를 등록했습니다. 구현 된 메소드는 사용자가 로그 아웃 링크를 사용할 때 작동합니다. 그러나 세션이 종료되면 마치 이벤트가 생성되지 않은 것처럼 보입니다.

나는 올바른 사건을 듣는 것을 잊고 있습니까? 아니면 세션 타임 아웃을 위해 해고 된 것이 있습니까? 이것을 달성 할 다른 방법이 있습니까? 그것은 서버 설정 (tomcat 6.0.24 btw)에 의존합니까?

해결법

  1. ==============================

    1.나는 Spring을 사용하지 않는다. 그래서 이것에 대해 아무 말도하지 않지만, javax.servlet.http.HttpSessionListener는 제대로 구현되고 등록 될 때 작동해야한다. 다음과 같이 web.xml에 로 등록해야합니다.

    나는 Spring을 사용하지 않는다. 그래서 이것에 대해 아무 말도하지 않지만, javax.servlet.http.HttpSessionListener는 제대로 구현되고 등록 될 때 작동해야한다. 다음과 같이 web.xml에 로 등록해야합니다.

    <listener>
        <listener-class>com.example.MyHttpSessionListener</listener-class>
    </listener>
    

    세션 시간 제한을 올바른 방법으로 테스트하고 있음을 기억하십시오. 예를 들어 웹 브라우저 창을 닫으면 서버 측 세션이 즉시 파괴되지 않습니다. 클라이언트는 30 분 동안 HTTP 요청을 보내지 않는 한 세션을 유지합니다. 이 30 분은 web.xml의 항목으로 구성 할 수있는 기본 세션 시간 초과입니다.

    또한 servletcontainer는 정확히 시간 초과 값 이후 세션을 즉시 삭제하지 않습니다. 일정한 간격 (예 : 부하 및 servletcontainer 제조업체 / 유형에 따라 5 ~ 15 분)으로 실행되는 백그라운드 작업입니다. 정확히 30 분 동안 사용하지 않으면 sessionDestroyed () 메서드가 호출되지 않을 때 놀라지 마십시오. 그러나 시간 초과되었지만 파괴되지 않은 세션에서 HTTP 요청을 실행하면 즉시 폐기됩니다.

  2. ==============================

    2.생각, DelegatingSessionListener 접근법이 유용 할 수 있습니다. 그것은 이미 여기 언급 :

    생각, DelegatingSessionListener 접근법이 유용 할 수 있습니다. 그것은 이미 여기 언급 :

    스프링을 사용하여 HttpSessionListener에 의존성을 주입하는 방법은 무엇입니까?

  3. from https://stackoverflow.com/questions/3719691/detect-session-timeout-in-spring-3-spring-security-2-0-5 by cc-by-sa and MIT license