当前位置: 首页 > 知识库问答 >
问题:

会话超时不起作用vaadin

梁丘成和
2023-03-14

我正在开发一个vaadin web应用程序,我在web.xml中添加了以下代码片段。

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

现在我注意到,也在30分钟后,我的用户能够使用应用程序,我不想这样。我在vaadin的书上读到了一些关于这个问题的东西,但我并不了解一些东西。

在web.xml中:

<session-config>
   <session-timeout>30</session-timeout> 
  </session-config>

会话超时应长于心跳间隔,否则会话在心跳保持活动之前就已关闭。由于会话过期使UI处于假定会话仍然存在的状态,这将在浏览器中导致不同步错误通知。

但是,如果心跳间隔比会话超时时间短(这是正常情况),会阻止会话过期。如果servlet的closeIdleSessions参数被启用(默认情况下被禁用),则在session-timeout参数中指定的时间在最后一个非心跳请求后到期后,Vaadin将关闭UI和会话。

<servlet>
...
<init-param>
  <param-name>closeIdleSessions</param-name>
  <param-value>true</param-value>
</init-param>

共有1个答案

钱德海
2023-03-14

心跳表示客户端仍然存在。例如,当用户关闭浏览器时,客户端不能再发送心跳信号,服务器端会检测到这一点,并清理服务器端的UI。默认情况下,这将使会话永远保持活动状态。因此,如果这不是预期的行为,您必须在web.xml中设置:

<init-param>
    <description>Enable Session Timeout</description>
    <param-name>closeIdleSessions</param-name>
    <param-value>true</param-value>
</init-param>
 类似资料:
  • 问题内容: 我正在构建一个Node应用程序,用户必须在其中注册或登录,然后当他们拖放某些元素(前端都在工作)时,我将其操作及其相应的userId存储在数据库中。 我的理解是,一旦他们注册/登录,我就可以使用req.user来访问他们的ID并正确存储他们的操作,但是它不起作用。 这是我的server.js文件中处理Passport的部分。另外,我将Sequelize用作ORM,但是没有req.use

  • 在 HTTP 协议中,当客户端不再处于活动状态时没有显示的终止信号。这意味着当客户端不再处于活跃状态时可以使用的唯一机制是超时时间。 Servlet 容器定义了默认的会话超时时间,且可以通过 HttpSession 接口的 getMaxInactiveInterval 方法获取。开发人员可以使用HttpSession 接口的 setMaxInactiveInterval 方法改变超时时间。这些方法

  • 问题内容: 我在用户登录时创建会话,如下所示: 如何在X分钟的会话上指定超时,然后在达到X分钟后让它执行功能或页面重定向? 编辑:我忘了提及由于不活动,我需要会话超时。 问题答案: 首先,存储用户最后一次发出请求的时间 在后续请求中,检查他们多久之前提出了请求(在此示例中为10分钟)

  • 我有一个问题发生在我坐在空闲的时候,没有接触网络浏览器,vaadin在点击vaadin应用程序中的任何内容之后,就会抛出红色的通信问题错误消息。 我已经通过30分钟不接触浏览器进行了测试。之后,当我单击vaadin应用程序中的一个按钮时,它会抛出通信错误消息。 我有两个应用服务器,它们位于Rackspace的负载均衡器后面。我还启用了“粘性会话”... vaadin可能有自己的超时吗?

  • 在我的Vaadin应用程序中,当Vaadin在“session Timeout”消息之后没有使会话无效时,我遇到了一个问题。收到此消息后,用户有时可以单击链接或刷新页面,并继续工作,就像他们仍在登录一样。我使用以下参数: Last参数(session-timeout)也在context.xml(session-timeout=900)和web.xml(session-config/session-