jquery - Ajax 回调如何意识到用户的身份验证 session 已超时?

标签 jquery ajax django authentication http-authentication

我使用 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/

相关文章:

javascript - 设置cookie过期时间

javascript - Jquery on 函数无法在引导模式下工作

jquery - 处理javascript中的特殊字符

javascript - 使用 AJAX 使用 IEnumerable 返回对象

django - 如何在 django 中以两种不同的形式使用相同的 clean() 方法?

django - 找不到名为 'X' 的夹具

javascript - 组织用于不同目的(外观、jQuery 和 Selenium)的 HTML 类名和 ID

javascript - onClick 不适用于移动设备(触摸)

jquery - 使用没有类型“提交”的按钮提交表单数据

ajax - 使用 Mod_rewrite 实现 Google 可抓取的 AJAX URL