如何为i18n文件夹中的所有文件绕过Spring安全过滤器



我在Web.xml 中定义了springSecurityFilterChain

    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
   <url-pattern>/*</url-pattern>       
</filter-mapping>

在安全文件(security-configcas.xml)中,我定义了如下绕过:

<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">
    <constructor-arg>
        <list>
            <security:filter-chain pattern="/i18n/**"
                filters="none" />
        </list>
    </constructor-arg>
</bean> 

我的应用程序正在Websphere上部署。。。这个配置似乎不起作用,因为运行应用程序时仍有异常输出。

[4/11/14 10:27:32:993 EDT]00000e71 filter E com.ibm.ws.webcontainer.filter.FilterInstanceWrapper doFilter SRVE8109W:筛选器springSecurityFilterChain:java.io.FileNotFoundException:/i18n/messages_en-us.properties引发的未捕获异常网址:com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:700)网址:com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)网址:com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)网址:org.springframework.security.web.FilterChainPoxy.doFilterInternal(FilterChainProxy.java:186)网址:org.springframework.security.web.FilterChainPoxy.doFilter(FilterChainProxy.java:160)网址:org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilter Proxy.java:346)网址:org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilter Proxy.java:259)网址:com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrappr.java:195)网址:com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)网址:com.csc.fsg.pcdSecurity.filter.CASFilter.doFilter(CASFilter.java:663)网址:com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrappr.java:195)网址:com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)网址:org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncoding filter.java:88)网址:org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequest filter.java:76)网址:com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrappr.java:195)网址:com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)网址:com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:928)网址:com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager/java:1025)网址:com.ibm.ws.webcontainer.webapp.webapp.handleRequest(webapp.java:3761)网址:com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)网址:com.ibm.ws.webcontainer.webcontainer.handleRequest(webcontainer.java:975)网址:com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)网址:com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)网址:com.ibm.ws.http.channe.inbound.inpl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:459)网址:com.ibm.ws.http.channe.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:526)网址:com.ibm.ws.http.channe.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:312)网址:com.ibm.ws.http.channe.inbound.impl.HttpICLReadCallback.complete(HttpICLRReadCallback.java:87)在com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadComplettionListener.java:165)在com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncfue.java:217)在com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFutures.java:161)完成(AsyncFuture.java:138)在com.ibm.io.async.ResultHandler.complete上(ResultHandler.java:204)在com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)在com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)在com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1815)

我尝试了另一种方式作为

<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
    <security:filter-chain-map request-matcher="ant">
      <security:filter-chain pattern="/i18n/**" filters="none"/>
    </security:filter-chain-map>
</bean> <alias name="filterChainProxy" alias="springSecurityFilterChain"/>

但当我添加别名时,我的项目不起作用。。登录主页,加载时间太长了。。。。如果我缺少任何配置?

请提供建议。

您可能可以使用类似的东西

<http pattern="/your-folder/**" secure="none">
</http>

或者使用截取url(在spring-servlet.xml上)

<intercept-url pattern="/your-folder/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 

根据您使用Spring的方式,可能需要将以下内容添加到dispatcher-servelt.xml 中

<mvc:resources mapping="/your-folder/**" location="/your-folder/" />

最新更新