[英]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.