【问题标题】:jquery ajax calls form authentication issuejquery ajax 调用表单身份验证问题
【发布时间】:2012-05-16 08:27:16
【问题描述】:

我每 10 秒从一个页面对服务器进行一次 jquery ajax 调用。现在,当用户向服务器发出正常请求(无 ajax 调用)时(如果他闲置 2 分钟),我希望用户退出。我已经制作了一个超时 2 分钟的表单身份验证 cookie,但问题是自动 jquery ajax 调用(每 10 秒后)不会使用户未经身份验证。我该如何处理这种情况。

【问题讨论】:

  • 2分钟后清除AJAX请求的时间间隔?

标签: c# javascript jquery asp.net iis-7


【解决方案1】:

清除间隔,2分钟后删除认证cookie:

var intervalID=window.setInterval(yourajaxfunction,10000);

window.setTimeout(  
    function() {  
        clearInterval(intervalID);   // cancel the ajax requests
        clearCookie(); // remove the authentication cookie locally
    },  
    120000  // 2 minutes timeout
);

我猜在服务器端会检查身份验证 cookie - 如果未找到,则强制用户重新进行身份验证。

【讨论】:

  • 是的,应该由表单身份验证模块自动完成。但是在这种情况下,ajax 调用是连续进行的,并且由于 cookie 是与 ajax 调用一起设置的,因此表单身份验证模块会将用户视为他访问过该站点,因此它将进一步滑动到期时间,并且发送到服务器的请求越多将进一步到期。
  • @RockySingh 也许我的回答不够详细 - 想法是 ajax 调用将被停止(我猜你使用 setInterval 方法启动 ajax 调用?)......使用@ 987654323@ 方法 2 分钟后(从页面加载开始)并且 cookie 被清除...这意味着不再有通信,并且下次用户连接请求页面时 - 没有 cookie - 强制重新验证
  • 但页面上可能还有其他 ajax 调用,例如发送消息或该页面上的某些聊天应用程序。用户可能正在从中发送消息。我只是希望我的连续 ajax 调用不应该延长表单身份验证超时
  • @RockySingh 但是用户处于活动状态并且肯定应该在 2 分钟后强制重新登录?只需以这种方式清除所有自动 ajax 调用 - 如果用户执行某个操作,是否应该不重置 2 分钟?
【解决方案2】:

您可以在@服务器端创建一个验证函数。 每个 ajax 请求首先调用此验证,如果有效,则正常执行您的脚本。如果无效,您可以清除 cookie。

【讨论】:

  • 我没听懂你。你有一些样本或链接吗?
猜你喜欢
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
相关资源
最近更新 更多