繁体   English   中英

web.xml-Java Servlet过滤器和WebSphere-URL模式问题

[英]web.xml - Java Servlet Filters and WebSphere - URL Pattern issues

因此,我们正在运行一个已在Tomcat,Glassfish,WebLogic和WebSphere上经过测试的Web应用程序。 除WebSphere之外,其他所有程序均正常运行。 问题是未对特定目录下的文件处理过滤器。

例如,我有一个过滤器,它从浏览器cookie中检查用户的行程,另一个过滤器则用于获取用户的用户名,在web.xml中,其配置如下:

<!-- ****************************** -->
<!-- * Security context filtering * -->
<!-- ****************************** -->

<filter>
    <filter-name>SetSecurityContextFilter</filter-name>
    <filter-class>
        com.test.security.SecurityContextServletFilter
    </filter-class>
</filter>

<!-- ****************************** -->
<!-- ** Locale context filtering ** -->
<!-- ****************************** -->

<filter>
    <filter-name>SetLocaleFilter</filter-name>
    <filter-class>
        com.test.locale.LocaleServletFilter
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>SetSecurityContextFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>SetLocaleFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping> 

这两个过滤器都设置了一个静态的线程局部变量,可以从静态的getter进行访问,但是当同一文件“ test.jsp”调用getter时,它们在“ contextroot / js”下返回默认值(就像未设置一样),而在“ contextroot”下 / pages'是正确的。

有任何想法吗?

提前致谢。

我发现了问题所在!

在我的web.xml中,我有这个:

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Test Application</web-resource-name>
            <url-pattern>/pages/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
             ...
        </auth-constraint>
    </security-constraint>

如果我将URL模式更改为“ / *”,以便上下文根目录下的每个页面都需要登录,则所有过滤器将始终正确运行。 但是,这确实意味着我的登录页面无权访问任何CSS文件,但这是另一个问题!

干杯。

将登录页面定义为form-login-page可能有助于它获取CSS资源,如下所示<form-login-config> <form-login-page>/Login.jsp</form-login-page>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM