进入不同的Struts名称空间

时间:2015-06-29 10:38:53

标签: java session cookies struts2 jsessionid

我们的网络应用程序有两个不同的命名空间。出于此问题的目的,它们将被称为/packageOne/packageTwo

/packageOne内访问Struts操作时,一切都按设计运行,因为JSESSIONID不会更改。

特定类型的计算机公司笔记本计算机属于特定部门的员工)上,JSESSIONID在转到Struts操作时发生更改在/packageTwo。此外,cookie中的其他属性随着更改而消失,因此似乎已经创建了一个新的cookie。回到/packageOne内的Struts操作可以撤消此更改,恢复之前的JSESSIONID Cookie。

根据我们的理解,只要特定的用户会话尚不存在,就会创建一个新的JSESSIONID。在这种情况下,我们想知道为什么命名空间的切换意味着现有的用户会话不再适用,因此需要创建新的JSESSIONID

编辑:这就是我们web.xml的样子。它几乎是默认的。

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" 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_4.xsd">

    <display-name>Struts Project Name</display-name>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

编辑2 :这就是我们发现JSESSIONID已更改

的方式
  • 我们在Chrome中打开了网络应用并激活了开发者控制台。
  • 在我们的webapp的登录表单(位于/packageOne名称空间中)之后,我们将进入主页面,这是同一名称空间中的另一个Struts操作/packageOne
  • 我们切换到“资源”选项卡,展开资源树中的Cookie项目,然后点击以我们的域名命名的cookie。
  • 在资源树右侧的表格中,我们看到JSESSIONID作为其中一行的名称并注明了该值。我们还注意到还有其他字段,例如csrf_tokenAPISIDHSIDNID等。
  • 在单独的命名空间(即/packageTwo)中继续执行Struts操作后,我们在开发者控制台中注意到,具有相同名称的cookie现在具有不同的JSESSIONID值(在“值”列中)并且大多数其他领域都缺失了,除了一个,我忘记了它。

我知道目前还不清楚我们要求的是什么。我们正在尝试找出这种异常的原因,就像我们的测试环境,登台和许多其他生产环境一样,这种情况根本不会发生(JSESSIONID和即使在/packageTwo)中切换到Struts操作后,cookie中的其他字段仍保持不变。

编辑3 :有关发生此异常的有问题环境的更多信息:

  • 这是一款企业笔记本电脑,IBM Thinkpad。
  • 它已连接到企业WiFi。
  • 属于人力资源部。
  • 我们无法在类似型号的公司笔记本电脑上重现相同的异常(IBM Thinkpad)连接到同一企业WiFi,不同之处在于它属于IT部门的员工。 / LI>
  • 然而,我们可以在属于同一员工的不同PC上重现相同的异常,并且该部门的其他员工也报告了该问题。

0 个答案:

没有答案