【问题标题】:Spring Security with DelegatingFilterProxy带有 DelegatingFilterProxy 的 Spring Security
【发布时间】:2012-06-23 12:49:14
【问题描述】:

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

<!-- 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 过滤器进行身份验证,而是直接访问我的服务。

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

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

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

【问题讨论】:

  • 能否通过将log4j.logger.org.springframework.security=DEBUG 添加到src/main/resources/log4j.properties 并发布输出来启用调试?
  • 您还有其他过滤器吗?
  • 你可以试试/
  • @Xaerxess:我实际上得到了一个异常。像这样严重:Servlet 远程处理的 Servlet.service() 在 java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2280) 在 java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java) 处抛出异常 java.io.EOFException :2749) 在 java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779) 在 java.io.ObjectInputStream.(ObjectInputStream.java:279) 在 org.springframework.core.ConfigurableObjectInputStream.
  • @axtavt:不,没有其他过滤器。

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


【解决方案1】:

它成功地为我工作,因为我在 spring-security.xml 中添加了以下 sn-p

 <http auto-config="true">
    <intercept-url pattern="/**" access="ROLE_USER" />// pattern was modified to /**
    <http-basic/>
</http>

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 2012-06-15
    • 2011-01-15
    • 2020-06-11
    • 1970-01-01
    • 2011-10-07
    • 2012-03-30
    • 2016-12-05
    • 2018-01-29
    相关资源
    最近更新 更多