网络应用程序中处理会话超时的最佳方法是什么?

11

我目前正在构建一个用于工厂/仓库类型场所的内部Web应用程序。用户将在多人共用一台PC的情况下使用该应用程序,因此我们需要设置一个相当短的会话超时时间,以防止其他人在上一个用户离开登录状态的情况下来到该PC并以上一个用户的用户名进行操作。

这样做的问题是,如果用户正在填写表单并且花费了很长时间,那么会话可能会超时。

您如何以用户友好的方式处理这个问题?

11个回答

3
使用AJAX定期存储部分填写的表单内容,以防止用户因系统问题而失去他们的工作。甚至可以使用AJAX来保持用户会话不超时,以便他们有足够的时间输入内容。

3

需要让服务器知道用户正在输入信息。例如,如果用户按下TAB键或鼠标单击字段,请向服务器发送消息。最终的解决方案由您决定。


我认为这对我的情况最为适用。它比弹出对话框并显示用户可能不理解的消息更少侵入性。而且它不会通过不断轮询服务器来无限期地保持会话活动状态。 - anon

2

最好的建议可能是要求用户在完成后关闭浏览器窗口。使用会话Cookie,当浏览器关闭或在30分钟超时时(可以更改),会话将自动结束。

由于默认情况下,一旦页面加载完成,浏览器和服务器之间就没有交互,因此您需要在表单页面上使用JavaScript在后台联系服务器以刷新会话,但对于这样一个小问题来说,这似乎有点麻烦。


2
如果会话超时时间太短,以至于用户没有足够的时间来填写表单,那么我会放置一个AJAX脚本,每隔几分钟向服务器发出HTTP请求,以保持会话活动状态。我只会在用户需要填写或已经开始填写的页面上这样做。
另一种解决方案是使用会话超时提醒脚本,弹出对话框提醒用户会话即将超时。弹出窗口应该显示“注销”和“继续使用应用程序”,后者可以使ajax请求更新会话超时时间。

1
也许在这种情况下,保持连接的JavaScript进程会有所帮助。如果脚本捕获到一些关键触发器,它会向服务器发送“我仍在输入”消息以保持会话活动状态。

1

你考虑过将表单分成更小的部分吗?


对用户来说可能有点烦人,但是当他们搞砸了某些事情时,将服务器端验证分开可能会让用户感到不那么烦人。 - CrashCodes

1

监控超时并弹出弹窗通知用户当前会话即将过期,并显示“确定”或“取消”按钮。点击“确定”可以保持会话(即重置计时器为另外5分钟或10分钟-根据需要);点击“取消”则允许会话继续倒计时至零,从而结束。
这只是处理此问题的众多方法之一。


1

使用JavaScript“线程”来保持会话开放,对我来说是个坏主意。

这违背了会话超时的理念,该功能存在的目的是释放一些资源,如果没有用户在应用程序前面使用。

我认为你应该根据更准确的时间调整会话超时时间,以便在“典型正常使用”的情况下填写表单。

你还可以积极地:

  1. 有一个JavaScript警报显示非侵入式警告(而不是弹出窗口)给用户,在超时到期之前,提醒用户会话即将过期(并提供链接发送ajax请求以重置超时时间和删除警告 - 这将避免用户丢失他目前正在输入的表单),
  2. 还可以有第二个JavaScript“线程”,如果会话已过期,则重定向到登录页面,并显示消息说明会话已过期。

我认为这是最好的选择,因为它可以避免用户为无用的填写复杂的表单,还可以处理用户离开的情况。


0
作为技术解决方案的替代,您可以以这样的方式制作您的应用程序,每当完成特定的工作时(例如填写表格),您都可以询问用户是否想要继续进行另一个工作,或者是否已完成。您可以拥有一个带有菜单选项的启动屏幕,如果用户选择一个选项,则必须首先输入其凭据。
或者在表单上放置一个密码字段。这取决于他们在会话中需要填写多少个表单。

0
当用户提交表单时,如果他们的会话已超时,您应该确保将表单值保存在某个地方,然后要求用户重新登录。一旦他们重新验证了身份,就可以重新提交表单(因为他们的数据不会丢失)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接