1

只是为了好奇,如果我有 20 分钟的会话超时并且会发生以下情况:

  1. 用户访问网站。初始会话超时开始。
  2. 一分钟后在同一页面$.post("/api/longrunningfuction", function() { alert("success"); })上调用。
  3. 邮政电话需要十分钟才能返回(希望不现实,只是为了帮助解决我的问题)。

现在剩下的时间是:

  1. 20 分钟由于回电和延长会议时间?
  2. 10 分钟(呼叫帖子延长了会话,但帖子返回已 10 分钟)。
  3. 其他?
4

2 回答 2

1

会话扩展通过将表单身份验证 cookie 重写为响应来工作。更具体地说,如果您为表单身份验证启用了滑动到期(出于安全原因通常不推荐),当向服务器发送请求时,表单身份验证模块会在请求开始时拦截此请求,它会解密表单身份验证 cookie为了提取表单身份验证票并修改此票的到期日期并将新 cookie 添加到响应中。所有这些都发生在请求的开头。这意味着会话将从那一刻起额外延长 20 分钟(或任何您定义的超时时间)。

然后让我们假设整个请求需要 10 分钟才能完成,然后才将响应返回给客户端(以及分别刷新的表单身份验证 cookie)。当客户端收到这个 cookie 时,还有 10 分钟的时间让它生效。

于 2013-02-22T13:03:35.870 回答
1

会话结束事件的文档说(强调我的)

当该Timeout 属性指定的分钟数过去而没有为会话发出请求,会话将过期。

因此,应该还有 10 分钟的剩余时间。

我还没有看到框架代码,但是会话持续时间是通过在响应中设置身份验证 cookie 持续时间来控制的。因此,即使在您的服务器端代码完成时发送了新的 cookie ,新的过期时间也是在收到请求时计算的,这似乎是合乎逻辑的。如果从计算到期时间到将其传回给客户端的时间之间经过了 10 分钟,那么这就是 10 分钟的会话丢失时间。

于 2013-02-22T13:04:08.137 回答