ASP.NET:如何检测身份验证超时

标签 asp.net forms session-timeout

我看过多篇类似 this one 的文章解释如何检测用户 session 已超时。为了清楚起见,这些文章指的是此 web.config 行定义的超时值:

<sessionState mode="InProc" cookieless="UseDeviceProfile" timeout="120" />

不要过多地讨论该方法,但这涉及到检查 Session.IsNewSession 是否为 true 以及 session 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>

在线多篇文章,包括this SO post ,已经说过您的 session 超时值通常应该是您的身份验证超时值的两倍。所以现在,如上所述,我的 session 是 120,我的身份验证是 60。这意味着我永远不会遇到 session 超时但用户仍然经过身份验证的情况;如果用户超时,那将是由于身份验证,而不是 session 。

因此,像其他人一样,我感兴趣的是如何向用户报告其 session 已超时(但实际上是由于身份验证超时)。有谁知道实现此目的的方法,或者有任何在线资源可以为我指出解决方案吗?

最佳答案

这可能不是最佳方法,但这是我的想法。

登录时,在用户登录时在 session 标记中记录时间戳。在每个后续请求中(可能在 global.asax BeginRequest 中?),将此时间戳与当前时间进行比较,并将其与身份验证超时进行匹配(斯科特·汉塞尔曼 explains how to read it here)。

无论如何,这就是我“突然想到的”想法......

关于ASP.NET:如何检测身份验证超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4402141/

相关文章:

c# - ImageButton 中的回发或回调参数无效

javascript - AngularJS - 使用 $valid 进行动态验证

javascript - Angular - FormController 是否被 ng-controller 覆盖?

javascript - 使用 javascript 使用下拉选择生成结果

java - 如何使用 wicket ajax 请求处理 session 超时?

asp.net - Windows 身份验证和 session 超时

php - 如何在php中跟踪注销时间 session 并将其作为数据库保存在mysql中

c# - Watin - 使用 ConfirmDialogHandler 处理确认对话框

javascript - jqGrid 标题和正文/数据列宽度不相等

c# - .net core 6 中的配置连接字符串