自定义AuthenticationFailureHandler @Bean与新的FailureHandler()

时间:2019-02-15 11:06:38

标签: spring security

我正在实现AuthenticationFailureHandler,并将其添加到过滤器中。哪种方法更好,有什么区别?

public AuthenticationFilter authenticationFilter() throws Exception{
    final AuthenticationFilter authenticationFilter  = new AuthenticationFilter(authenticationManager());
    authenticationFilter.setFilterProcessesUrl("/login");
    authenticationFilter.setAuthenticationFailureHandler(new FailureHandler());
    return authenticationFilter ;
}

vs

public AuthenticationFilter authenticationFilter() throws Exception{
    final AuthenticationFilter authenticationFilter  = new AuthenticationFilter(authenticationManager());
    authenticationFilter.setFilterProcessesUrl("/login");
    authenticationFilter.setAuthenticationFailureHandler(customAuthenticationFailureHandler());
    return authenticationFilter ;
}
@Bean
public AuthenticationFailureHandler customAuthenticationFailureHandler() {
    return new FailureHandler();
}

我看到他们使用Bean进行配置的配置,但是我不明白为什么。

1 个答案:

答案 0 :(得分:1)

两种方式都在做同样的事情。唯一的区别是,在第二个实例中,您将这个FailureHandler声明为bean,并且如果需要(不推荐),则可以通过@autowired在spring管理的任何bean中获取它。

我更喜欢第一个,因为您可以确保FailureHandler仅在您声明的AuthenticationFilter上。

第二个用于不需要显式声明AuthenticationFilter的情况,而您将使用spring预先配置的一个。