Spring Boot 3.2是否需显式放行自定义ErrorController的/error资源?
Spring Boot 3.2 自定义ErrorController的安全访问行为变更
结论
是的,Spring Boot 3.2 确实变更了对server.error.path指定资源的自动放行行为——在Spring Security的默认配置中,不再自动允许访问该路径,这正是你遇到403错误无法进入自定义ErrorController的核心原因。
背景与变更逻辑
在Spring Boot 2.7及更早版本中,Spring Boot的自动配置会自动向Spring Security过滤器链添加规则,允许所有用户访问server.error.path对应的错误端点(默认是/error),因此不需要手动配置放行。
但从Spring Boot 3.0开始,随着与Spring Security 6.x的整合,框架调整了自动配置逻辑,不再默认自动放行错误端点。当你的应用触发403访问拒绝后,框架尝试转发到/error端点时,该端点也会被安全规则拦截,导致二次拒绝,最终返回默认错误响应。
验证后的解决方案
正如你已经实践的,需要在Spring Security配置中显式放行/error路径:
.requestMatchers("/error") .permitAll()
该配置确保错误处理端点能被所有用户(包括未认证或被权限拦截的用户)访问,从而让自定义ErrorController正常处理各类错误响应,包括403场景下的自定义内容。
补充提示
如果你的server.error.path配置了自定义路径(比如/custom-error),同样需要在安全配置中对该路径添加permitAll()规则,才能保证错误处理器正常工作。
内容的提问来源于stack exchange,提问作者Hamish Lawson
相关产品推荐
相关产品推荐

