2013-02-22 112 views
1

只是出于好奇,如果我有20分钟的会话超时,并会发生以下情况:会话长度在呼叫开始时还是在呼叫结束时延长?

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

会剩余时间现在是:

  1. 20分钟由于后调用返回和延长会议?
  2. 10分钟(通话时间延长了会议,但已经过去了10分钟)。
  3. 其他?

回答

1

documentation用于会话结束事件表示,(重点煤矿)

当由Timeout 属性中指定的分钟数过去而没有请求正在取得用于会话的会话到期。

因此应该有剩余的10分钟。

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

1

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

然后让我们假设整个请求需要10分钟返回到客户机(和分别刷新形式验证cookie)的响应之前完成。当客户收到这个cookie时,剩下10分钟的时间才能生效。