我看过多篇类似这篇文章的内容,它们解释了如何检测用户会话已超时。为了更清晰地表述,这些文章所指的是由以下web.config行定义的超时值:
<sessionState mode="InProc" cookieless="UseDeviceProfile" timeout="120" />
不多介绍这种方法,它涉及检查Session.IsNewSession是否为真以及会话cookie是否已经存在。但是我没有看到任何关于如何检测身份验证超时的文章 -- 这是由web.config中的这一行定义的:
<authentication mode="Forms">
<forms loginUrl="~/Home/Customer" timeout="60" name=".ASPXAUTH" requireSSL="false" slidingExpiration="true" defaultUrl="~/Home/Index" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
</authentication>
许多在线文章,包括这篇SO文章,都说你的Session超时值通常应该是您认证超时值的两倍。因此,现在我的Session是120,我的Authentication是60。这意味着我永远不会遇到会话已超时但用户仍然通过身份验证认证的情况; 如果用户超时,这将是由于认证而不是会话。
因此,和其他人一样,我对如何向用户报告他们的会话已超时(但实际上是由于认证超时)很感兴趣。是否有人知道如何实现这一点或有任何在线资源可以指向解决方案?