2012-05-21 3 views
0

Jsp-servlet에서 작업 중입니다. 나는 로그온을 위해 3 JSP 페이지를 가지고있다. 로그인 성공 후 직원 기록을 표시 한 다음 로그 아웃했다. 로그 아웃 후 내 문제가 있었다. 다시 버튼을 누르면 직원의 기록이 표시되므로 뒤로 버튼을 비활성화하고 캐시를 지웠다. 그리고 로그인 페이지로 리디렉션jsp의 뒤로 버튼 로그 아웃하지 않고 로그인 페이지로 리디렉션

하지만 문제는 로그인 성공 후 사용자가 레코드 페이지에 있고 다시 버튼을 누르면 로그 아웃하지 않고 로그인 페이지가 표시된다는 것입니다. 이것에 대한 해결책?

답변

1

뒤로 버튼을 사용 중지 할 수 있지만 이렇게하지 말고 로그 아웃 후 뒤로 버튼의 캐시에서로드되는 페이지를 캐시하지 않도록 브라우저에 알려야합니다.

response.setHeader("Cache-Control","no-cache"); 
세션을 무효화 할 난 당신이 너무 쿠키를 삭제되었을 수 있습니다 귀하의 경우 생각

및 : 서블릿 필터는 최적의 전처리 우선은 필터에이 같은 일을 할 수있는 요구에 적합 할 것 구현 된대로 로그인 페이지로 리디렉션됩니다. 코드를 제공 할 수 있다면 더 좋을 것입니다.

0

뒤로 버튼을 누르면 세션이 무효화되지 않습니다. 그것은 캐싱 (직원 대시 보드가 표시된 페이지에 날짜를 인쇄 해보십시오 .Forward 버튼을 누를 때마다 새 요청이 서버로 전송됩니다).

추가 : response.setHeader ("Cache-Control", "비공개, no-store, no-cache, must-revalidate"); response.setHeader ("Pragma", "no-cache"); response.setDateHeader ("Expires", 0); 하지만 운동은하지 않습니다.

백 버튼을 사용하지 않으려면 자바 스크립트를 추가해야합니다 (클라이언트는 솔루션이 아닌 js를 사용 중지 할 수 있음). 첫 번째 JSP에 조건을 추가하는 다른 해결책이 있습니다. 즉, 세션의 사용자 이름 (또는 사용중인 모든 속성)이 null입니다.

다시 버튼을 누르면 즉, 세션이 무효화되지 않으면 사용자 이름이 여전히 존재하며 로그인 한 사용자 만 표시하고 거기에 로그 아웃 버튼을 제공 할 수 있습니다.

또는 LoginPage jsp에서 sessionAttribute not nullate 세션에 대한 세션 매개 변수를 확인할 수 있습니다.

-1
<script> 

$(document).ready(function() { 
    function disableBack() { window.history.forward() } 

    window.onload = disableBack(); 
    window.onpageshow = function(evt) { if (evt.persisted) disableBack() } 
}); 
</script> 

우리는 해당 jsp 페이지에서만 자바 스크립트를 사용하여 뒤로 키를 비활성화 할 수 있습니다.

+0

적절한 솔루션이 아닙니다. – bitoiu

+0

그런 다음 올바른 해결책을 위해 세션을 사용하여 유효성을 검사해야합니다. –

관련 문제