在Web应用程序中处理会话超时的最佳方法?

时间:2008-09-22 11:26:29

标签: authentication web-applications session

我目前正在构建工厂/仓库类型位置中使用的内部Web应用程序。用户将在几个人之间共享一台PC,因此我们需要有一个相当短的会话超时来阻止人们徘徊并让应用程序登录,其他人可以来到PC并使用以前用户的用户名做某事。

这个问题是当用户当前在表单中输入信息时,会话可能会超时,特别是如果他们需要很长时间。

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

11 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

由于默认情况下,一旦加载页面,浏览器和服务器之间没有交互,你必须在窗体页面的后台有一个javascript联系服务器来刷新会话,但它似乎有点过这个小问题很麻烦。

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

您是否考虑过将表单分成更小的块?

答案 6 :(得分:1)

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

答案 7 :(得分:1)

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

这违背了会话超时的想法,如果应用程序前面没有用户,则会释放一些资源。

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

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

  1. 在超时到期之前向用户显示一个非侵入式警告(不是弹出窗口)的JavaScript警报,这表示会话将很快到期(并提供一个链接以发送ajax请求以重置超时并删除该警告 - 这将避免用户丢失他正在键入的表单),
  2. 并且还有第二个JavaScript“线程”,如果会话已过期,则会重定向到登录页面,并显示会话已过期的消息。
  3. 它认为这是最好的,因为它可以避免用户填写复杂的表格,并在用户离开时处理。

答案 8 :(得分:0)

作为技术解决方案的替代方案,您可以使您的应用程序以每次完成特定工作的方式进行,例如填写表格,您询问用户是否要继续从事另一项工作,或者他是否完成。 Yould可以有一个带有菜单选项的启动屏幕,如果用户选择了一个选项,他首先必须输入他的凭据。

或在表单上输入密码字段。取决于他们有多少表格填写会议。

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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