【发布时间】:2019-06-06 19:33:38
【问题描述】:
我的 rest 控制器中有一个 post 端点,无需身份验证/授权即可访问。它在 WebSecurityConfigurerAdapter 中配置如下:
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers("/api/v1/user");
}
端点具有输入数据的验证(由注释 javax.validation.Valid 提供)。当我发送无效数据时,我收到 401 响应而不是 400。这个问题在安全端点中不存在,默认的 spring boot 400 消息被发送。
在调试过程中,我发现在处理 MethodArgumentNotValidException(在控制器中发生验证错误时抛出)期间,WebExpressionVoter 被执行并返回值 -1,这意味着“拒绝访问”。如何配置我的应用程序以忽略公共端点的安全检查?
我知道使用 ControllerAdvice 进行异常处理是一种选择,但是否可以使用默认的 400 条消息?
提前感谢您的任何提示!
编辑:
Security filter chain: [
WebAsyncManagerIntegrationFilter
SecurityContextPersistenceFilter
HeaderWriterFilter
LogoutFilter
OAuth2AuthenticationProcessingFilter
RequestCacheAwareFilter
SecurityContextHolderAwareRequestFilter
AnonymousAuthenticationFilter
SessionManagementFilter
ExceptionTranslationFilter
FilterSecurityInterceptor
]
【问题讨论】:
标签: spring-boot spring-security spring-security-oauth2