场景是用户应该在她的 session 即将过期时收到通知(比如通过典型的 JS 警报或重定向等)。有几种方法可以做到这一点
- 按照说明使用 javascript 超时功能 here .
- 使用Server Push使用 WebSockets这当然需要 HTML5 支持。
这两种方法的相对优点/缺点是什么?除了这些,还有其他方法可以实现吗(一些标准库等)。我的后端是 Java EE (Struts+Spring)。
最佳答案
通过使用 javascript 超时函数,您需要确保如果用户进行任何 AJAX 调用,您的函数应该被重置,因为它应该被视为用户 Activity 。
如果使用服务器推送使用 websockets,您可能无法针对使用不是最新浏览器的用户。您可能必须使用一些信号框架,甚至更改您的后端堆栈。 (我现在可以想到 socket.io 和 SignalR)
这两种方法都不会优雅地降级。因此,IMO javascript 选项听起来更好,因为它可以针对更广泛的受众,并且需要您解决一些边缘情况。如果我有选择,我根本不会实现这个功能。但这种情况几乎不会发生。
更新: 这是我能想到的另一种方法。
每次提供页面时,我都会发送一个 Cookie,它可以在客户端访问,其中包含 session 超时的 UTC 时间。在我的代码中,我会放置一个 setInterval,它会读取值并将本地时间与 UTC 进行比较,如果它关闭,则会显示一个弹出窗口,说明超时将在 X 秒等后发生。
这又不会优雅地降级并且依赖于客户端机器的时间。因此,如果错误,此功能将无法可靠地运行。
关于java - 在客户端处理 session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993465/