实施Spring Boot Security时管道损坏

时间:2015-11-24 16:52:42

标签: java spring spring-mvc spring-security spring-boot

我有一个运行良好的Spring Boot MVC应用程序。

我尝试按照一些有关集成Spring Security来处理用户登录的教程,但是一旦我创建了下面的类,应用程序就会开始生成Broken pipe错误。

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/","/home").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
                .logout()
                .permitAll();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .inMemoryAuthentication()
                .withUser("user").password("password").roles("USER");
    }
}

我已经尝试了许多不同的教程,认为原始教程可能有一些错误,但它仍然在发生。

2015-11-25 09:39:57.593  INFO 64614 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2015-11-25 09:39:57.620  INFO 64614 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 27 ms
2015-11-25 09:39:58.970 ERROR 64614 --- [nio-8080-exec-2] o.s.boot.context.web.ErrorPageFilter     : Cannot forward to error page for request [/login] as the response has already been committed. As a result, the response may have the wrong status code. If your application is running on WebSphere Application Server you may be able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false

org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe

我无法弄清楚造成这种情况的原因。

我在本地Tomcat实例上部署此应用程序。

要确认,该应用程序似乎仍然正常工作,我不确定这个错误是否需要担心?

1 个答案:

答案 0 :(得分:0)

我有同样的错误,但我认为这种错误可能取决于很多事情。我也使用带有angularJs堆栈的spring-boot。

当我尝试等待请求的答案(花时间)到我的spring-boot应用程序时,我遇到同样的问题。

我把我的解决方案放在这里,如果它可以帮助某人:

对我来说,问题来自 Apache Httpd 配置,因为我把我的应用程序放在apache服务器后面。在我的情况下,当apache超过默认超时(我认为300秒)时,apache关闭连接。当发生这种情况时,你的弹簧启动显示broken pipe错误。

要解决此问题,您只需在apache httpd配置文件的TimeOut yourValueInSecond中添加httpd.conf即可。

在更改配置文件之前测试是否真的是由于apache httpd服务器直接在tomcat服务器上发送请求。