无法在Spring Security中处理InternalAuthenticationServiceException

时间:2019-02-04 18:10:57

标签: spring spring-boot security spring-security

我正在使用Spring Boot开发rest api。我有一个扩展UsernamePasswordAuthenticationFilter的类,在这里我重写了attemptAuthentication方法。在身份验证过程中,Spring内部使用我的CustomUserDetailsService,如果找不到用户,则抛出异常。 Spring内部处理该异常并抛出InternalAuthenticationServiceException。问题是,我无法在我自定义错误发生时自定义响应的中心位置捕获该异常。我为此使用了@ControllerAdvice,但是看来Spring只是忽略并总是发送默认的“内部服务器错误”。

1 个答案:

答案 0 :(得分:1)

要捕获“失败的身份验证”,只需在您的过滤器

中覆盖方法unsuccessfulAuthentication
@Override
protected void unsuccessfulAuthentication(
    HttpServletRequest request,
    HttpServletResponse response,
    AuthenticationException failed)
            throws IOException, ServletException {

    //handle errors
}