(我正在使用Spring Boot 1.3.5和Spring Security 4.2.2)。
我的应用程序中有多个自定义AbstractAuthenticationProcessingFilter
和AuthenticationProvider
,它们各自可以引发不同类型的异常,所有异常都将导致身份验证失败。所以我写了一个实现AuthenticationFailureHandler
并实现
onAuthenticationFailure(HttpServletRequest request,
HttpServletResponse response, AuthenticationException exception)
侦听失败的身份验证尝试。
我的问题-我的SimpleUrlAuthenticationFailureHandler
内可能知道哪个AbstractAuthenticationProcessingFilter
失败了吗?自从最后一个参数为AuthenticationException
以来,我已经能够抛出特定的异常,但是我还需要知道AbstractAuthenticationProcessingFilter
,但无法确定如何继续。
答案 0 :(得分:0)
为每个过滤器连接SimpleUrlAuthenticationFailureHandler
的单独实例是否可行?它可能比一个知道一切的处理程序要简单,例如:
MyFirstFilter first = new MyFirstFilter();
first.setAuthenticationFailureHandler
(new SimpleUrlAuthenticationFailureHandler(...));
MySecondFilter second = ...
http
.addFilter(first) ...
否则,您可以向request
对象中写一些东西。
与其扩展AbstractAuthenticationProcessingFilter
,不如扩展OncePerRequestFilter
,它可能会起作用,这可能会给您带来AAPF模板无法提供的灵活性。