javascript - 如何在浏览器关闭或选项卡关闭时销毁 Vaadin 8 session ?

标签 javascript session vaadin vaadin8

如何在 Vaadin 中销毁浏览器关闭/选项卡关闭时的 session ?我们可以使用 javascript 来处理这个问题。我尝试了下面的代码: Page.getCurrent().getJavaScript().execute("window.onbeforeunload = function (e) { var e = e || window.event; closeMyApplication(); return; };") ; 上面脚本的问题是,它也会在页面刷新时触发 onbeforeunload 事件。另外,在移动设备(触摸设备)中如何处理这种情况?

最佳答案

我建议将 closeIdleSessions 设置为 true 且较短的心跳间隔,这将强制 Vaadin 内部 session 清理机制在 Web 浏览器关闭后更快地销毁 session 。

如果这没有帮助,还有辅助插件 https://vaadin.com/directory/component/cleanupservlet-add-on

复制自 https://vaadin.com/docs/v8/framework/application/application-lifecycle.html

session 过期

session 通过用户与应用程序交互以及 UI 心跳监控引起的服务器请求保持事件状态。所有 UI 过期后, session 仍然存在。当 Web 应用程序中配置的 session 超时到期时,它会从服务器中清除。

如果应用程序中有事件的 UI,它们的心跳会使 session 无限期地保持事件状态。如果用户不活动的时间足够长,您可能希望 session 超时,这就是 session 超时设置的最初目的。如果在 web.xml 中将 servlet 的 closeIdleSessions 参数设置为 true(如“使用 web.xml 部署描述符”中所述),则当达到 session-timeout 参数指定的超时时,将关闭 session 及其所有 UI servlet 在最后一个非心跳请求后过期。一旦 session 消失,浏览器将在下一个服务器请求时显示“不同步”错误。为了避免出现难看的消息,您可能需要为 UI 设置重定向 URL,如“自定义系统消息”中所述。

相关配置参数详见“其他Servlet配置参数”。

您可以使用 SessionDestroyListener 在服务器端处理 session 过期,如用户 session 中所述。

关于javascript - 如何在浏览器关闭或选项卡关闭时销毁 Vaadin 8 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50524420/

相关文章:

javascript - 如何将 jquery 添加到 wordpress 插件

javascript - 正则表达式适用于浏览器但不适用于 Node.js

node.js - 通过 session 存储数据

php - session 变量可以被愚弄(登录)?

java - Vaadin 14 为同一类型的元素添加不同的样式?

java - Vaadin:将枚举值绑定(bind)到组合框(ConversionException)

javascript - 如何添加 <div></div> 和 name+size+delete 出现在新的 div 中。 javascript jquery

asp.net - 为什么将表单例份验证超时设置为比 session 超时长?

vaadin - 找不到模块 '@vaadin/flow-frontend/Flow'

javascript - 减少 Plotly.js 库的大小