解决方案 »

  1.   

    你的顺序错了先定义intercept-url, 然后form-login,最后是custom-filter 。你刚好反了
      

  2.   

    请教下,我用的spring security3.2.5的也同样报出这个错误,而且我的顺序是对的,spring-security.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.0.xsd    
    http://www.springframework.org/schema/security   
    http://www.springframework.org/schema/security/spring-security-3.2.xsd">  
    <!--     <global-method-security pre-post-annotations="enabled">   -->
    <!--     </global-method-security>   -->
       <!-- 定义不需要过滤的静态资源 -->
       <http pattern="/*.jpg" security="none"/>
       <http pattern="/*.png" security="none"/>
       <http pattern="/*.gif" security="none"/>
       <http pattern="/*.css" security="none"/>
       <http pattern="/*.js" security="none"/>
       <!-- 无权限访问时跳转的页面 -->
       <http use-expressions="true" auto-config="true"  
            access-denied-page="/index.vm"/>
        <!-- 登录访问不需要过滤 -->    
    <!--  <http pattern="/user/doLogin*" security="none"/> -->   <http use-expressions="true" auto-config="true"  
            access-denied-page="/index.vm"> 
            <form-login login-page="/index.vm" authentication-failure-url="/index.vm?error=true" />  
            <!-- 增加一个自定义的filter,放在FILTER_SECURITY_INTERCEPTOR之前,实现用户、角色、权限、资源的数据库管理。  -->  
         <custom-filter ref="myFilter" before="FILTER_SECURITY_INTERCEPTOR"/>
        </http>
        
     <!--  一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,
         我们的所有控制将在这三个类中实现,解释详见具体配置  --> 
          <beans:bean id="myFilter" class="cn.com.asto.ec.manager.security.MyFilterSecurityInterceptor" > 
              <beans:property name="authenticationManager" 
                 ref="authenticationManager"/> 
              <beans:property name="accessDecisionManager" 
                 ref="myAccessDecisionManagerBean"/> 
              <beans:property name ="securityMetadataSource" 
                 ref="securityMetadataSource"/> 
          </beans:bean> 
         
          <!--  认证管理器,实现用户认证的入口,主要实现UserDetailsService接口即可  --> 
          <authentication-manager alias="authenticationManager" > 
              <authentication-provider user-service-ref="myUserDetailService" > 
                  <!--    如果用户的密码采用加密的话,可以加点“盐”
                     <password-encoder hash="md5" />
                  --> 
              </authentication-provider> 
          </authentication-manager> 
          
          <beans:bean id="myUserDetailService" class="cn.com.asto.ec.manager.security.MyUserDetailService"/> 
     
          <!--  访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源  --> 
          <beans:bean id ="myAccessDecisionManagerBean" 
             class ="cn.com.asto.ec.manager.security.MyAccessDecisionManager" > 
          </beans:bean> 
         
          <!--  资源源数据定义,即定义某一资源可以被哪些角色访问  --> 
          <beans:bean id="securityMetadataSource" class="cn.com.asto.ec.manager.security.MyInvocationSecurityMetadataSource"/> 
      
    </beans:beans>  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>
      </filter-mapping>
    请问下会是哪里的问题,楼主你的问题解决了吗