Ajax 콜백은 사용자의 인증 된 세션이 시간이 정해 졌다는 것을 어떻게 인식 할 수 있습니까?

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

문제

Django와 JQuery를 사용하여 인증 된 세션 및 AJAX 요청을 구현합니다.

내 사이트에서 장기간의 비 활동 후 인증 된 사용자를 기록하기 위해 세션 타임 아웃을 인증했습니다. 내 사이트의 일부 페이지에는 사용자가 인증 된 세션에 있어야하는 Ajax 호출이 많이 있습니다. 사용자가 그러한 페이지를 오랫동안 열고 세션이 자동으로 타기를하게되면 Ajax 호출이 실패하고 브라우저 오류가 표시됩니다. 내 웹 스택 (django) 은이 Ajax 요청에 대한 로그인으로 리디렉션을 반환하지만 $ .ajax () (jQuery 사용)에 오류로 표시됩니다.

인증 세션이 시간이 지남에 따라 페이지를 다시로드하고 AJAX 요청을 통해 사용자를 로그인 페이지로 보낼 수 있습니까?

도움이 되었습니까?

해결책

한 가지 방법은 페이지를 핑하여 여전히 로그인한지 여부를 확인하는 스크립트를 갖는 것입니다. 그러나 이렇게하면해야 할 Ajax 요청의 수가 증가합니다.

또 다른 옵션은 complete 기능 $.ajax() 전달 된 XMLHTTPREQUEST 객체에서 HTTP 상태 코드를 확인하십시오.

$.ajax({..., complete = function(xhr, textStatus){
    if(xhr.status > 300 && xhr.status < 400) //you got a redirect
        window.location.href = '/login/';
    ...
    }, ...);

다른 팁

간단하게, 당신이 쿼리하는 스크립트가 어떤 종류의 오류 코드를 반환 할 수도 있습니다.

{'error', 'notloggedin'}

그런 다음 JavaScript 에서이 값을 확인하기 만하면됩니다. 발견되면

window.location.href = '/login/';

JavaScript를 로그인 페이지로 리디렉션하려면 (필요에 따라 경로 변경)

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