我正在使用Django和JQuery来实现身份验证的会话和AJAX请求。

我已经对会话超时进行了认证,可以在我的网站上长期不活动后将身份验证的用户记录下来。我网站上的某些页面中有很多Ajax呼叫,这些电话要求用户参加身份验证的会话。当用户长时间打开此类页面并进行会话自动定时时,任何AJAX调用都会失败并显示浏览器错误。我的Web堆栈(Django)返回重定向以登录到这些AJAX请求,但它们只是显示为$ .ajax()(使用jQuery)的错误。

当我发现他们的auth会话已经计时时,我如何重新加载页面并通过AJAX请求将用户通过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