会话长度是在通话开始时延长,还是在通话结束时延长

本文关键字:时延 结束 开始时 会话 开始 | 更新日期: 2023-09-27 18:00:28

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

  1. 用户访问网站。初始会话超时开始
  2. 在同一页面上一分钟后,调用CCD_ 1
  3. 电话回访需要十分钟才能回来(希望不现实,只是为了帮助我理解问题)

现在剩下的时间是:

  1. 由于通话后返回并延长了会话,所以需要20分钟
  2. 10分钟(主叫邮件延长了会话,但10分钟后该邮件才返回)
  3. 其他

会话长度是在通话开始时延长,还是在通话结束时延长

会话结束事件的文档显示(emphasis mine)

Timeout指定的分钟数时,会话过期属性通过,而不会对会话发出请求。

因此,应该还有10分钟。

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

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

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