我们有一个 Vaadin 14 (Flow) 应用程序,它前面有一个 Apache 反向代理,它与Gluu集成以使用 OpenID (mod_auth_openidc) 进行身份验证。
这通常工作正常,除非用户让他们的浏览器保持打开状态而应用程序长时间处于空闲状态,直到达到 OpenID 会话的最大会话时间。问题是,此时 Vaadin 客户端一直在尝试发送心跳请求。这与此 mod_auth_openidc 问题相结合,导致状态 cookie 堆积并达到限制,因此用户必须关闭浏览器才能重新登录。
我尝试了各种方法(未成功),以便在会话超时后收到心跳请求时让服务器指示浏览器访问注销 URL(vaadin.closeIdleSessions=true
与针对当时可能打开并发送心跳请求的其他浏览器选项卡的解决方案。
我们真正想要的是限制 Vaadin 客户端重试发送心跳请求的次数(比如最多 3 次),然后停止发送请求(可能显示重新登录的消息)。
这有可能吗?当前的解决方法是完全禁用心跳,但这似乎并不理想(Vaadin 不会检测空闲 UI)。