如何通过有关在服务器上销毁spring会话的消息通知浏览器中的客户端?

在教育应用程序中使用的技术:服务器端具有Spring FrameworkSpring SecuritySpring SessionSpring Data Rest,客户端具有HTML5Knockout.JS。会话超时设置为30分钟。

用户故事:
用户被授权,并开始填写新文件。
他没有储蓄就离开了工作。
会话结束时返回,并且没有收到任何消息,请继续在表单中输入数据。
用户单击以保存文档,并收到一条消息,指出会话已被破坏。输入的数据丢失:0(

无法应用Websocket技术,因为该通道已锁定公司代理服务器内容过滤。

也许有必要链接HttpSessionEventDeferredResultchat example by Rossen Stoyanchev)。
我有实现HttpSessionListener.sessionDestroyed (HttpSessionEvent event)记录会话结束的工具。

我想有一个解决这种任务的现成模式,但是我没有在文档Spring SessionSpring Security - Session Management中找到答案。

最佳答案

这可能不是您正在寻找的解决方案,但在我看来,针对您的特定问题,最简单,侵入性最小的解决方案将是每个页面都包含一个javascript代码(如果您使用Tiles,则可以将其放在模板),每隔x秒通过AJAX轮询服务器;只要开始接收AccessDeniedException,就意味着该会话已过期,并且在网页上可以看到合适的消息。会话期满的机会很小,并且用户尝试在轮询产生AccessDeniedException之前尝试执行一些操作-javascript代码应该捕获用户操作导致的异常,并可视化同一条消息。

关于javascript - 在浏览器中通知客户端有关销毁服务器上的Spring Session的信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40037461/

10-16 23:04