如何在SimpleUrlAuthenticationFailureHandler中找到哪个AuthenticationProvider / Filter失败?

时间:2018-08-13 19:29:19

标签: spring-boot spring-security

(我正在使用Spring Boot 1.3.5和Spring Security 4.2.2)。

我的应用程序中有多个自定义AbstractAuthenticationProcessingFilterAuthenticationProvider,它们各自可以引发不同类型的异常,所有异常都将导致身份验证失败。所以我写了一个实现AuthenticationFailureHandler并实现

的类
onAuthenticationFailure(HttpServletRequest request, 
    HttpServletResponse response, AuthenticationException exception)

侦听失败的身份验证尝试。

我的问题-我的SimpleUrlAuthenticationFailureHandler内可能知道哪个AbstractAuthenticationProcessingFilter失败了吗?自从最后一个参数为AuthenticationException以来,我已经能够抛出特定的异常,但是我还需要知道AbstractAuthenticationProcessingFilter,但无法确定如何继续。

1 个答案:

答案 0 :(得分:0)

为每个过滤器连接SimpleUrlAuthenticationFailureHandler的单独实例是否可行?它可能比一个知道一切的处理程序要简单,例如:

MyFirstFilter first = new MyFirstFilter();
first.setAuthenticationFailureHandler
    (new SimpleUrlAuthenticationFailureHandler(...));
MySecondFilter second = ...

http
    .addFilter(first) ...

否则,您可以向request对象中写一些东西。

与其扩展AbstractAuthenticationProcessingFilter,不如扩展OncePerRequestFilter,它可能会起作用,这可能会给您带来AAPF模板无法提供的灵活性。