Spring Security 3.1.1 + Jboss 7错误

时间:2014-07-28 09:10:46

标签: java spring spring-mvc jboss

当我尝试部署在Jboss上使用spring securety的应用程序时,我遇到了一些问题,错误是:

Caused by: java.lang.IllegalArgumentException: A universal match pattern ('/**') is defined  before other patterns in the filter chain, causing them to be ignored. Please check the ordering in your <security:http> namespace or FilterChainProxy bean configuration

这是我的applicationContext-securety.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">

    <!-- HTTP security configurations -->      
    <!--<global-method-security pre-post-annotations="enabled"/>-->
   <http pattern="/ext/**" security="none" /> 
       <http pattern="/resources/**" security="none" /> 
      <http pattern="/**" security="none" /> 

<http auto-config="true" use-expressions="true" disable-url-rewriting="true" entry-point-ref="tendwebEntryPoint">            
    <!-- Configure these elements to secure URIs in your application -->        
    <intercept-url pattern="/index.jsp" access="isAuthenticated()" /> 
    <!-- Filter -->          
     <custom-filter ref="mockimiAuthenticationFilter" after="FORM_LOGIN_FILTER"/>       
</http>

<authentication-manager alias="authenticationManager" />    

 <beans:bean id="imiAuthenticationFilter" class="com.tend.imi.web.security.imiAuthenticationFilter">
    <beans:property name="tendwebFilter" ref="tendWebFilter" /> 
    <beans:property name="imiUserDetailsService" ref="imiUserDetailsService"/>          
</beans:bean>   

<!-- Filtro de la tendweb -->
<beans:bean id="tendWebFilter" class="Gci.utils.http.LoginFilter" /> 

<beans:bean id="tendwebEntryPoint" class="com.tend.imi.web.security.imiwebEntryPoint" />

<beans:bean id="imiUserDetailsService" class="com.tend.imi.web.security.imiUserDetailsService" />

我在web.xml中使用它

<filter>
    <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>

任何人都可以帮助我吗?我搜索了很多,但没有用。

2 个答案:

答案 0 :(得分:0)

可能是this question的双倍。

问题是您说/**对任何用户开放,但之后您尝试使用auto-config

根据错误代码,这会导致冲突,因为Spring并不知道/index.jsp是应该对所有用户开放还是仅为经过身份验证的用户开放。

答案 1 :(得分:0)

谢谢Celius爵士的回答。

最后我解决了我的问题。错误发生在web.xml中contextConfigLocation的声明中,我有这个:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>

我不知道为什么,但使用特殊字符“*”并不喜欢Jboss,我只是改变了这一切,一切正常。

我在tomcat和weblogic中部署了这个应用程序,这种情况从未发生......我认为这是Jboss必须解决的错误。

相关问题