【问题标题】:Session changes after a few seconds : Java Servlets几秒钟后会话更改:Java Servlets
【发布时间】:2012-01-19 01:57:29
【问题描述】:

我有一个 Tomcat 6.0 的默认安装,并且我有一个将信息存储在会话变量中的应用程序。

我的会话似乎在短暂不活动后失效。只要我每隔几秒钟导航到另一个页面,会话数据就在那里,但是如果我停止点击大约半分钟,浏览器存储的会话 ID 就会发生变化。 (我已经使用 Firebug 确认了这一点,并从我的目标浏览器 IE8 中看到了相同的行为。)

为什么会发生这种情况?我的应用程序的 web.xml 指定了 30 分钟的会话,我已致电 session.setMaxInactiveInterval(60) 以查看是否有任何改变,但似乎没有。

完整性检查:

我的网络应用程序 web.xml 是这样开始的:

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
    version="2.5">
  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>

我的服务器的 web.xml 包含这些行:

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

【问题讨论】:

    标签: session tomcat6


    【解决方案1】:

    根据this,您使用的方法将输入作为秒,而不是分钟,因此您会变得更糟。

    至于其余部分,我会考虑使用会话的代码,因为 web.xml 片段看起来不错。

    【讨论】:

    • 你赢了。我子类化的 servlet 之一就是这样做的。
    【解决方案2】:

    Tomcat 6 的一些最新版本有一个名为“Session Fixation”的功能,它会在您登录后更改会话 ID。

    【讨论】:

      猜你喜欢
      • 2014-10-24
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多