我假设您正在使用表单身份验证。那是对的吗?如果是这样,您需要让表单身份验证票证的超时时间与会话超时时间相匹配。
用户通过一个比最初看起来更复杂的过程保持登录状态。cookie 存储在用户的浏览器中,称为 Forms Authentication Ticket。如果用户在会话超时限制之后保持空闲状态,服务器将丢弃会话。但在下一个请求中,Forms Authentication Ticket 将被传回 Web 服务器。服务器验证票证,如果票证仍然有效,则用户重新登录。
如您所见,用户的会话没有恢复。如果您想要这种行为,则必须自己检测这种情况并恢复会话。
解决方案是将 Forms Authentication Ticket 的超时设置为与 Session 超时相同。您可以在 Web.config 文件中完成此操作,如下所述:
<system.web>
<authentication mode="Forms">
<forms timeout="20"/>
</authentication>
</system.web>
超时值以分钟为单位。一旦 Forms Authentication Ticket 超时,用户将被注销。这与会话的超时无关,但如果它们相同,它们将在大致相同的时间到期。如果您想完全安全,请将 Forms Authentication Ticket 超时设置为比会话超时短一点。用户将在会话超时之前注销。当他们再次登录时,他们将获得一个新会话。旧会话最终将自行超时。