在Aspx页面上使用AJAX Web控件时,我应该如何处理会话超时

本文关键字:何处理 我应该 处理 超时 会话 Aspx 控件 Web AJAX | 更新日期: 2023-09-27 17:47:48

以下是几个月前我在博客上问的一个问题,但我仍然没有得到正确的答案。几天前,有人问我是否有答案,所以我决定把这个问题复制到这里,让有意愿和能力的开发人员更多地了解这个问题。不管怎样,来吧。。。


我一直在开发一个ASP.NET web应用程序,该应用程序利用AJAX Control Toolkit控件来扩展应用程序的可用性。此外,该应用程序是一个严肃的业务应用程序,需要安全性,包括加密、身份验证和授权。HTTP会话是InProc模式的会话,默认时间为20分钟。

这当然意味着,如果用户在浏览器上留下一个页面超过20分钟,则会话已过期,任何返回服务器的帖子都会将浏览器重定向到登录页面。但是,例如,如果页面包含AJAX control Toolkit中的AutoCompleteExtender控件,则用户可能会返回浏览器并开始使用该扩展程序的功能,需要进行后台回调,但会意识到该控件根本不起作用-没有错误,不会重定向到登录页面!?


正如我所说,我没有解决方案,所以我最终在我的所有页面(在我的MasterPage中)上安装了SessionExpiredMonitor(Herr Ziffer的),这导致每个页面在19分钟内自动注销,然后将浏览器重定向到登录页面。然而,我不认为这是一个解决方案,所以如果你能解决这个问题,请告诉我。非常感谢。

在Aspx页面上使用AJAX Web控件时,我应该如何处理会话超时

在服务器端,您可以检测到会话已过期并返回强类型异常。在浏览器端,您可以专门检测该错误,只需刷新页面即可。这假设当您的页面返回进行刷新时,您的应用程序检测到过期的会话并让它们再次登录。

在用户的会话实际过期后将其重定向到登录页面有什么问题?从用户的角度来看,我真的更喜欢这样,而不是不注意到一个过期的会话,填写一些太长的表格,并在提交时实际注意到过期。这至少是一个用户友好的解决方案。

我认为自动重定向是最好的解决方案,主要是出于明显的安全原因。

您可以在用户处于非活动状态18毫秒后向用户显示警报,警告他们的会话将在1分钟后到期,并通过单击按钮来扩展会话,从而调用后端页面来恢复会话,从而进一步扩展该功能。

就在会话到期并且页面将用户重定向到登录页面之前,您可以保存用户/页面/帐户的状态,以便在他们重新登录时可以重定向回上次查看的页面。