3

我正在使用 django 和 jquery 来实现经过身份验证的会话和 Ajax 请求。

在我的网站上长时间不活动后,我已经验证了会话超时以注销经过验证的用户。我网站上的一些页面中有很多 AJAX 调用,要求用户处于经过身份验证的会话中。当用户长时间打开此类页面并且会话自动超时时,进行的任何 AJAX 调用都将失败并显示浏览器错误。我的网络堆栈(django)为这些 AJAX 请求返回登录重定向,但它们只是显示为 $.ajax() 的错误(使用 jquery。)

当我发现他们的身份验证会话已超时时,如何重新加载页面并通过 AJAX 请求将用户发送到登录页面?

4

2 回答 2

7

一种方法是使用一个脚本来 ping 一个页面以查看它是否仍处于登录状态,但这会增加您必须执行的 AJAX 请求的数量。

另一种选择是具有检查传入的 XMLHttpRequest 对象上的 HTTP 状态代码的complete功能:$.ajax()

$.ajax({..., complete = function(xhr, textStatus){
    if(xhr.status > 300 && xhr.status < 400) //you got a redirect
        window.location.href = '/login/';
    ...
    }, ...);
于 2009-04-10T03:42:20.550 回答
1

真的很简单,让您查询的任何脚本返回某种错误代码,也许

{'error', 'notloggedin'}

然后,您需要做的就是在您的 javascript 中检查此值。如果找到了,你就做类似的事情

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

使 javascript 重定向到登录页面(根据需要更改路径)

于 2009-04-06T21:56:54.067 回答