11

我目前正在构建一个用于工厂/仓库类型位置的内部 Web 应用程序。用户将在几个人之间共享一台 PC,因此我们需要有一个相当短的会话超时时间,以防止人们四处走动并让应用程序处于登录状态,这样其他人就可以来到 PC 并使用前一个用户的用户名进行操作。

这样做的问题是,当用户当前正在将信息输入表单时,会话可能会超时,尤其是当他们需要很长时间时。

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

4

11 回答 11

3

使用 AJAX 定期存储部分填写的表单的内容,这样他们在被系统引导时不会丢失他们的工作。哎呀,一旦你这样做了,如果他们花时间打字,请使用 AJAX 来防止他们的会话超时。

于 2008-09-22T11:29:23.847 回答
3

让服务器了解用户正在积极输入信息的事实。例如,如果用户按下 TAB 键或用鼠标单击字段,则向服务器发送消息。最终解决方案取决于您。

于 2008-09-22T11:30:31.067 回答
2

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

由于默认情况下,一旦加载页面,浏览器和服务器之间就没有交互,因此您必须让 javascript 在表单页面的后台联系服务器以刷新会话,但这似乎有点太麻烦了这么小的问题。

于 2008-09-22T11:28:51.287 回答
2

如果会话超时时间太短以至于用户没有时间填写表格,我会放置一个 AJAX 脚本,每隔几分钟向服务器发出一个 http 请求,以保持会话处于活动状态。我只会在用户必须填写某些内容或已经开始填写某些内容的页面上这样做。

另一种解决方案是使用会话超时提醒脚本,该脚本会弹出一个对话框来提醒用户会话即将超时。弹出窗口应显示“注销”和“继续使用应用程序”,发出 ajax 请求以更新会话超时。

于 2008-09-22T11:34:53.083 回答
1

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

于 2008-09-22T11:29:26.717 回答
1

你有没有考虑把表格分成更小的块?

于 2008-09-22T11:41:46.500 回答
1

监控超时并发布一个弹出窗口以通知用户他们当前的会话将过期并显示“确定”或“取消”按钮。OK 让会话继续进行(即,将计数器重置为另外 5 分钟或 10 分钟 - 无论您需要什么) - 或 - 取消以允许会话继续倒计时至零,从而结束。
这是处理它的许多方法之一。

于 2008-09-22T12:19:42.553 回答
1

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

如果应用程序前面没有用户,则存在用于释放一些资源的会话超时的想法。

我认为您应该使用更准确的时间调整会话超时,以便以“典型的正常使用”填写表格。

您也可以通过以下方式积极主动:

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

它认为这是最好的,因为它避免了用户填写复杂的表格,并在用户离开时处理情况。

于 2008-09-22T12:50:48.500 回答
0

作为技术解决方案的替代方案,您可以使您的应用程序在每次完成特定工作(例如填写表格)时询问用户他是否想继续做另一份工作或者他是否已经完成。Yould 可以有一个带有菜单选项的开始屏幕,如果用户选择一个选项,他首先必须输入他的凭据。

或者在表单上输入密码字段。取决于他们必须在一个会话中填写多少表格。

于 2008-09-22T11:43:12.110 回答
0

当用户发布表单并且他们的会话超时时,您应该确保将表单值保存在某处,然后要求用户再次登录。一旦他们重新验证了您的身份,他们就可以重新提交表单(因为他们的数据都不会丢失)。

于 2008-09-22T12:15:15.390 回答
0

我开发了一些需要很长时间的东西。用户坐在机器上时登录页面,完成工作后退出。现在他可能会使用系统几分钟或几个小时。为了让会话保持活跃直到他注销,我使用了带有 javascript 的计时器,它转到服务器并用服务器上的当前时间更新了国歌标签。

于 2008-09-22T12:37:06.163 回答