2010-10-14 4 views
6

내 응용 프로그램에서 AJAX를 사용하여 일부 테이블을로드하고 있습니다. 그러나 사용자의 세션 시간이 초과되면 응답으로 로그인 페이지가 표시되어 테이블 영역에로드됩니다.AJAX에서 세션 시간 초과 응답

AJAX 호출 중에 세션 시간 초과가 발생하면 JavaScript로 로그인 페이지로 리디렉션하고 싶습니다.

+0

나는 이와 같은 질문을 생각하기에는 너무 늦었고 자신을 발견했다. 모든 페이지로드 (서버 측)에서 사용자 존재 여부를 확인합니다. 그들이 로그인하지 않으면 나는 단지 ajaxtimeout을 포함 할 문자열을 죽일 것이다. 내 자신의 라이브러리 대부분은 responsetext.indexof ('ajaxtimeout')를 확인합니다.이 경우 window.location = login 페이지가됩니다. –

답변

5

로그인 페이지를 렌더링 할 때 응답에 사용자 정의 HTTP 헤더를 추가 할 수 있습니다 : X-LOGIN-PAGE: True. 그런 다음 AJAX 호출을 수행하고 success 콜백에서이 사용자 정의 헤더가 있는지 확인하십시오. 그에 따라 행동하십시오.

+0

이 경우 모든 페이지에서 각 AJAX 호출에서이를 확인해야합니다. –

+1

jquery를 사용하는 경우 [jquery.ajaxSetup] (http://api.jquery.com/jQuery.ajaxSetup/) 전역 아약스 옵션을 설정하고 기존 AJAX 호출을 수정하지 않고'complete' 콜백에서 리디렉션을 수행 할 수 있습니다 . jQuery를 사용하지 않는 경우 AJAX 호출 수행 방법에 따라 솔루션이있을 수도 그렇지 않을 수도 있습니다. –

0

AJAX 호출에 의해 호출되는 메소드에서 인증을 확인할 수 있으며, 발견되지 않으면 플래그를 반환 할 수 있습니다. 클라이언트 페이지의 AJAX 핸들러에서 로그인 페이지를 감지하고 리디렉션 할 수 있습니다.