【发布时间】:2014-10-17 11:16:54
【问题描述】:
我正在开发一个必须使用会话超时的应用。
问题是用户经常错过会话超时并丢失数据。我已经在 javascript 中实现了一个小型会话保持器,如果浏览器中有一些活动,它将每分钟更新一次会话,但是用户仍然以某种方式丢失数据(假设他们正在填写一半的表格,离开他们的机器和会话过期后返回并提交表单。)
我想找到一些方法来警告他们他们的会话已过期。问题是我不知道该怎么做。我无法在 javascript 中检查 session cookie 的过期时间,因为它是一个 HttpOnly cookie,如果我执行某种 AJAX 请求来检查 session 的状态,它会自动为 session 设置一个新的过期时间。
谁能找到绕过这些障碍的方法?
【问题讨论】:
-
每次设置或刷新会话时,添加一个 setTimeout 会在 1 分钟内提醒用户,像这样
setTimeout(function() { alert("Your session is expired.");}, 6000); -
如果他们提交了一个表单,而您的服务器端逻辑决定他们的会话已过期 - 那么为什么不简单地将他们提交的数据放入一个新会话中,并将他们重定向到登录表单?在他们再次成功登录后,您从会话中获取该数据,并对其进行处理……
标签: javascript ruby-on-rails session cookies