在浏览器中检查会话过期

时间:2014-08-23 21:53:22

标签: javascript ruby-on-rails session cookies

我正在开发一个必须使用会话超时的应用。

问题是用户经常错过会话超时并丢失数据。我已经在javascript中实现了一个小会话管理器,如果浏览器中有一些活动,它会每隔一分钟更新一次会话,但是用户仍然会以某种方式丢失数据(可以说他们只填写了一个表单,离开了他们的机器,在会议结束并提交表格后回来。)

我想找到一些方法来警告他们他们的会话已经过期了。问题是我无法弄清楚如何做到这一点。我无法在javascript中检查会话cookie的到期时间,因为它是一个HttpOnly cookie,如果我做某种AJAX请求来检查会话状态,它会自动设置一个新的到期时间为会议。

有人能看到解决这些障碍的方法吗?

1 个答案:

答案 0 :(得分:1)

这不是关于检查会话超时的直接答案......但是当我担心用户在表单中丢失工作时,我发现garlic.js可以提供帮助。基本上,它是一个JS库,负责在表单提交之前将表单数据保存在用户浏览器的本地存储中。因此,如果浏览器关闭或会话过期,数据不会丢失。因此,对于数据丢失部分,这可能是一个很好的备份解决方案。

<强>更新

我通常在会话超时后避免表单提交的做法是设置一个javascript计时器,它会在典型的会话超时长度后几秒钟自动将用户重定向到会话过期页面(再次轻松登录按钮)。 (当页面中有活动时,您可以使用AJAX轮询重置此计时器。)这与garlic.js结合使用,结合“深度潜水”功能(通过这种功能,您可以在访问会话时将经过身份验证的URL存储在会话中超时并重新登录,将用户返回到他们所在的最后一页,创建一个非常无缝的超时,登录,恢复你离开场景的地方。