我正在尝试为Spring Boot webapp配置自定义安全筛选器。最初我将它配置为从Angular JS自定义表单登录,但现在我试图分离该配置并实现Siteminder SSO过滤器。我正在使用Spring提供的RequestHeaderAuthenticationFilter。我也会发布配置。但是当我添加这个配置时,当我在服务器启动后拉起我的webapp时,它会进入无限循环。这是无限循环。如果您想查看其他配置或详细信息,请告诉我,但这一周以来一直困扰着我。任何帮助将不胜感激。谢谢!
======================Infinite Loop Start=========================
[ERROR] org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/mpe].[dispatcherServlet] - Servlet.service() for servlet dispatcherServlet threw exception
java.lang.StackOverflowError: null
====================================624 Times Start=============================================
at javax.servlet.ServletRequestWrapper.isAsyncStarted(ServletRequestWrapper.java:390) ~[servlet-api.jar:3.0.FR]
=====================================624 Times End============================================
at org.apache.catalina.core.ApplicationDispatcher.unwrapRequest(ApplicationDispatcher.java:846) ~[catalina.jar:7.0.55]
====================================40Times Start====================
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) ~[catalina.jar:7.0.55]
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) ~[catalina.jar:7.0.55]
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411) ~[catalina.jar:7.0.55]
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) ~[catalina.jar:7.0.55]
at org.springframework.boot.context.web.ErrorPageFilter.forwardToErrorPage(ErrorPageFilter.java:155) ~[spring-boot-1.1.3.RELEASE.jar:1.1.3.RELEASE]
at org.springframework.boot.context.web.ErrorPageFilter.handleException(ErrorPageFilter.java:138) ~[spring-boot-1.1.3.RELEASE.jar:1.1.3.RELEASE]
at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:108) ~[spring-boot-1.1.3.RELEASE.jar:1.1.3.RELEASE]
at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:89) ~[spring-boot-1.1.3.RELEASE.jar:1.1.3.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) ~[catalina.jar:7.0.55]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) ~[catalina.jar:7.0.55]
====================================40 Times End===========================================
====================================Infinite Loop End============================================
答案 0 :(得分:1)
无限循环是由于配置错误造成的。一些常见原因:
答案 1 :(得分:1)
我从堆栈跟踪中看到,Spring Boot的ErrorPageFilter
涉及无限循环,并且您正在使用Spring Boot的版本1.1.3.RELEASE。 Spring Boot 1.1.5中的change was made确保其ErrorPageFilter
仅针对每个请求驱动一次。您应该升级到最新版本的Spring Boot(编写本文时为1.1.8.RELEASE)。它可以完全解决您的问题,也可以让您在无限循环之后看到潜在的问题。