Ajax 콜백은 사용자의 인증 된 세션이 시간이 정해 졌다는 것을 어떻게 인식 할 수 있습니까?
-
05-09-2019 - |
문제
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를 로그인 페이지로 리디렉션하려면 (필요에 따라 경로 변경)
제휴하지 않습니다 StackOverflow