自动超时Web客户端使用
我在浏览器上执行复杂任务时遇到的问题之一是自动超时。
目前,我们的网站的有效期为30分钟。通常,这不是问题,因为我们使用asp.net,并且在大多数情况下,用户会更新一个或者两个字段,然后提交表单。这显然使会话保持活动状态。我一直在努力解决如何通过复杂得多的表单/用户交互来处理此问题,如果没有往返服务器的机会很少。
现在,用户可以在我们的网站上查看报告,键入电子邮件等,而我正在努力在他们实际上使用浏览器但不积极回发信息的同时如何使他们的会话保持活动状态。我不需要滑动到期时间,但这是必需条件,因此我坚持使用它。我们的大多数用户都在组织外部,所以我不能使用任何形式的SSO。
有没有人有一个优雅的解决方案(如果可行,我什至会选择一个丑陋的解决方案),还是我很不走运?
解决方案
回答
我们最近在我的组织中经历了这一过程。尽管这不是最佳解决方案,并且在多个浏览器窗口中进行正确的会话很困难,但我们在页面上设置了倒数计时器,包括一个刚刚返回并点击服务器以重新启动会话的按钮,并且还向用户提供了并显示一个JavaScript弹出窗口(用户最喜欢的解决方案部分),并显示一条消息,指示会话距超时5分钟,然后单击"确定"按钮以重新启动。然后,该按钮将击中服务器以重新启动会话,重新启动基础页面上的计时器,关闭弹出窗口,并且根本不需要刷新基础页面。
回答
让浏览器定期通过Ajax对服务器进行ping操作,以使会话保持活动状态。大多数站点在此ping操作中都会做一些有用的事情,例如保存用户提交的草稿。
回答
嗯,由于内存使用量增加,不想增加会话时间的老问题。
一个答案是还要设置一个cookie,该cookie会在一天之后过期,而该cookie会告诉系统仍要记住该用户。这就是eBay所做的,等等。
回答
埃里克森走在正确的轨道上。
在由于"复杂的表单/用户交互,如果没有往返服务器的机会很少"而导致会话超时的站点区域上,我们可以放置一个keepalive控件来继续对服务器执行ping操作,从而保持会话状态活。
这是一个示例控件,我们可以使用它,也可以将其用作编写自己的代码的基础。