只是出于好奇,如果我的会话超时为20分钟,则会发生以下情况:
$.post("/api/longrunningfuction", function() {
alert("success");
})
。剩下的时间现在是:
答案 0 :(得分:1)
会话扩展的工作原理是将表单身份验证cookie重写为响应。更具体地说,如果您为表单身份验证启用了滑动过期(通常不建议出于安全原因),则在向服务器发送请求时,表单身份验证模块会在请求的开始处拦截此请求,它解密表单身份验证cookie,以便提取表单身份验证票证并修改此票证的到期日期,并将新cookie添加到响应中。所有这些都发生在请求的开头。这意味着会话将从那一刻起延长20分钟(或者无论你的超时定义)。
然后让我们假设在将响应返回给客户端(以及分别刷新的表单身份验证cookie)之前,整个请求需要10分钟才能完成。当客户收到此cookie时,还剩10分钟才能生效。
答案 1 :(得分:1)
会话结束事件的documentation表示(强调我的)
会话在
Timeout
指定的分钟数到期时到期 财产在没有要求为会话的情况下通过。
因此应该还有10分钟。
我还没有看到框架代码,但会话持续时间是通过在响应时设置身份验证cookie持续时间来控制的。因此,即使在服务器端代码已完成时发送新cookie,似乎也是合乎逻辑的,当请求接收时,将计算新的到期时间。如果在计算到期时间和将其传送回客户端之间经过10分钟,则会丢失10分钟的会话。