我使用 django 和 jquery 来实现经过身份验证的 session 和 Ajax 请求。
我设置了经过身份验证的 session 超时,以便在我的网站上长时间不活动后将经过身份验证的用户注销。我网站上的某些页面包含大量 AJAX 调用,要求用户处于经过身份验证的 session 中。当用户长时间打开此类页面并且 session 自动超时时,所做的任何 AJAX 调用都会失败并显示浏览器错误。我的 Web 堆栈 (django) 返回这些 AJAX 请求的登录重定向,但它们只是显示为 $.ajax() 的错误(使用 jquery。)
当我发现用户的身份验证 session 超时时,如何重新加载页面并通过 AJAX 请求将用户发送到登录页面?
最佳答案
一种方法是使用一个脚本,只对页面执行 ping 操作以查看它是否仍然处于登录状态,但这会增加您必须执行的 AJAX 请求的数量。
另一种选择是让 $.ajax()
的 complete
函数检查传入的 XMLHttpRequest 对象上的 HTTP 状态代码:
$.ajax({..., complete = function(xhr, textStatus){
if(xhr.status > 300 && xhr.status < 400) //you got a redirect
window.location.href = '/login/';
...
}, ...);
关于jquery - Ajax 回调如何意识到用户的身份验证 session 已超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/723396/