1

我们有一个 Vaadin 14 (Flow) 应用程序,它前面有一个 Apache 反向代理,它与Gluu集成以使用 OpenID (mod_auth_openidc) 进行身份验证。

这通常工作正常,除非用户让他们的浏览器保持打开状态而应用程序长时间处于空闲状态,直到达到 OpenID 会话的最大会话时间。问题是,此时 Vaadin 客户端一直在尝试发送心跳请求。这与此 mod_auth_openidc 问题相结合,导致状态 cookie 堆积并达到限制,因此用户必须关闭浏览器才能重新登录。

我尝试了各种方法(未成功),以便在会话超时后收到心跳请求时让服务器指示浏览器访问注销 URL(vaadin.closeIdleSessions=true与针对当时可能打开并发送心跳请求的其他浏览器选项卡的解决方案。

我们真正想要的是限制 Vaadin 客户端重试发送心跳请求的次数(比如最多 3 次),然后停止发送请求(可能显示重新登录的消息)。

这有可能吗?当前的解决方法是完全禁用心跳,但这似乎并不理想(Vaadin 不会检测空闲 UI)。

4

2 回答 2

1

UI 实例有一个ReconnectDialogConfiguration包含 reconnectAttempts属性来控制重试请求(包括心跳请求)的次数。默认值似乎是 10000。

在 Vaadin 14 (LTS) 中,可以使用PageConfigurator进行设置。

在 Vaadin 18(最新版本)中,这是使用AppShellConfigurator完成的

于 2021-01-07T12:27:15.213 回答
0

禁用心跳是要走的路。如果您需要比这更细微的东西,您需要对 Heartbeats 在 Vaadin 中的工作方式进行更改(可能添加配置选项)。在 GitHub 中创建票证可能是一个不错的起点。

于 2021-01-07T07:58:05.700 回答