使用DelegatingFilterProxy进行Spring安全性

时间:2012-06-21 09:45:48

标签: java spring servlets spring-security servlet-filters

我已经创建了一个弹簧安全过滤器,如下所示。

<!-- Enables Spring Security -->
    <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>
<!-- End Spring Security -->

<servlet>
    <servlet-name>remoting</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-        
class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/remoting-servlet.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>remoting</servlet-name>
    <url-pattern>/remoting/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>remoting</servlet-name>
    <url-pattern>/admin</url-pattern>
</servlet-mapping>

除此之外,我可以保证一切都是正确的。但我唯一的问题是,

当我访问链接http://localhost:8080/myContext/remoting/Services时,不会调用Spring Filter进行身份验证,而是直接访问我的服务。

当我在web.xml中添加以下行时。它工作正常。

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/remoting/*</url-pattern>
</filter-mapping>

我有什么疑问,因为我的过滤映射已定义为/ *。为什么我要再次定义一个过滤映射。

1 个答案:

答案 0 :(得分:0)

我成功地为我工作,因为我在spring-security.xml

中添加了以下代码段
 <http auto-config="true">
    <intercept-url pattern="/**" access="ROLE_USER" />// pattern was modified to /**
    <http-basic/>
</http>