我们的系统有一个小时的会话长度.有时,这会在用户按下表单上的“保存”按钮之前到期.当会话超时时,它们会被踢回登录页面并且它们的数据会丢失.这显然很糟糕.
我正在试图想出一个更好的方法来处理这种情况.这就是我提出的:
>在每个页面加载时,在JavaScript中启动一个55分钟的计时器.当它用完时,弹出一条消息,说“你的会话即将过期,如果你还活着,请点击这里”.
>单击该链接会将AJAX请求发送回服务器以重置会话
>如果他们在接下来的5分钟内没有点击链接,因为他们已经合法地不得不离开他们的计算机一分钟,但仍然有大量的工作形式怎么办?
>每30秒左右轮询一次服务器以查明其会话何时到期,然后在弹出窗口中显示登录屏幕
>让会议到期.将POST数据复制到安全的地方(其中??).当他们尝试保存表单时,他们将像往常一样被踢到登录表单.成功登录后,将数据重新发布到正确的位置.
其他人如何处理这种情况?什么是最好/最简单的方法?
解决方法
好.除了人们所说的“如果用户在表单上花费超过1小时,表单有问题”或“如果用户长时间闲置,这是他们的问题,只需将它们扔回登录页面”,我们与真实的人生活在一个真实的世界中,时间就是金钱.假设您经营一家网上商店,用户可以在他们的购物车中放入价值10,000美元的电话,他们的电话铃声和他们的女朋友会谈1小时……假设您的表单是一个textarea,用户决定写下他们的整个生命…假设您的应用是一个网络邮件.电子邮件正文是表格,对吧?我们不希望用户丢失他们花了2个小时写给亲人或重要客户的电子邮件,我们保存了草稿!有许多不同的可能性可以证明计时器,存储数据和
pinging the server.
如果您在时间/金钱关键表单页面上,请不要犹豫刷新服务器并保持会话活动.监控一些事件,如按键,点击等.这将以合法的方式刷新会话,只要它提供用户在那里的线索.
>使用浏览器事件甚至在提交表单之前保持会话处于活动状态>如果会话即将到期,请另存为草稿.>如果会话已过期,请使用灯箱再次获取凭据.