자신의 세션이 만료되었음을 사용자에게 알리는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2002303

  •  18-09-2019
  •  | 
  •  

문제

나는 15 분의 무 활동 후 Tomcat을 세션을 처분하도록 설정했습니다. 이 같은

<session-config>
    <session-timeout>15</session-timeout>
</session-config>

사용자가 제한된 페이지에 액세스 할 때마다 (사용자가 로그인 해야하는 경우) 로그인 프로세스가 완료되었는지 확인하십시오. 그렇지 않은 경우 액세스가 부여되지 않으면 사용자가 로그인 페이지로 리디렉션되는 유효한 ID와 비밀번호가 표시됩니다. 세션이 시간이되면 사용자는 다시 로그인해야합니다. 그리고 이것은 괜찮지 만, 세션이 시간이 지남에 따라 사용자에게 다시 로그를 들어야한다는 것을 사용자에게 알리고 싶습니다.

이 작업을 어떻게하려고합니까? 나는 httpsessionlistener 인터페이스를 발견했고 그것이 도움이 될 수 있다고 생각했지만 세션이 파괴 된 메소드가 세션이 무효화되기 직전에 호출되므로 매개 변수를 설정하면 예상대로 좋지 않습니다.

도움이 되었습니까?

해결책

로그인시 일반 로그 아웃 중에 제거 (1 일?)를 설정하는 긴 살아있는 쿠키 (1 일?)를 설정하십시오. 사용자가 로그인하지 않고 쿠키가 여전히 존재하는 동안 로그인 페이지에 다시 착륙하면 세션이 만료되었음을 의미합니다.

<c:if test="${empty user && not empty cookie.user}">
    You were logged out because the session was expired.
</c:if>

다른 팁

사용자를 로그인 양식으로 리디렉션 할 때 세션이 만료되었음을 나타내는 요청 매개 변수, URL 매개 변수 또는 쿠키를 설정하십시오 (쿠키를 사용하는 경우 로그인 양식을 표시 한 후 쿠키를 지우십시오). 그런 다음 양식을 표시 할 때 세션이 만료 된 표시기를 확인하고 적절한 메시지를 표시하십시오.

세션이 만료 및/또는 시간을 초과했는지 확인할 수 있습니다.

if (request.getRequestedSessionId() != null
        && !request.isRequestedSessionIdValid()) {
    // Session is expired
}

사용 getRequestedSessionId 신규 및 기존 (유효/만료 된) 세션을 구별하고 사용 isRequestedSessionIdValid 유효하고 새로운/만료 된 세션을 구별하기 위해.

이 코드를 a에 넣을 수 있습니다 필터.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top