java - 带有java配置的spring security AuthenticationFailureHandler

标签 java spring spring-mvc spring-security

我创建了一个像这样的自定义身份验证失败处理程序:

public class TrackerAuthFailureHandler extends SimpleUrlAuthenticationFailureHandler{

        @Override
        public void onAuthenticationFailure(HttpServletRequest request,
                HttpServletResponse response, AuthenticationException exception)
                throws IOException, ServletException {
            super.onAuthenticationFailure(request, response, exception);

            if(exception.getClass().isAssignableFrom(DisabledException.class)){
                setDefaultFailureUrl("/accountRecovery");
            }
        }
    }

然后我创建了一个这样的 bean:

@Bean
    public AuthenticationFailureHandler trackerAuthFailureHandler(){
        SimpleUrlAuthenticationFailureHandler handler=new SimpleUrlAuthenticationFailureHandler();
        return handler;
    }

和 Spring 配置是这样的:

    @Autowired
    private TrackerAuthFailureHandler trackerAuthFailureHandler;

    @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                .authorizeRequests()
                    .anyRequest().authenticated()
                    .and()
                .formLogin()
                    .loginPage("/login")
                    .permitAll()
                    .failureHandler(trackerAuthFailureHandler);
    }

但是发生了bean not found异常。有什么想法吗?

最佳答案

当您使用注释注入(inject)方式时,您必须在类 T​​rackerAuthFailureHandler 的顶部使用 @Component。像这样:.

@Component
public class TrackerAuthFailureHandler extends SimpleUrlAuthenticationFailureHandler{

关于java - 带有java配置的spring security AuthenticationFailureHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32446570/

相关文章:

java - 字符串应保持与 TextArea 类似的换行符

java - 我在 Linux 上有一台 8 GB RAM 和 32 位 JVM 的机器,我想让 JVM 最大程度地使用 RAM

spring - 将@CookieValue、@RequestHeader等映射到Spring Controller中的POJO

java - Pivotal Cloud Foundry - 安全证书

java - Spring Boot测试RestTemplate : Pass along session id

java - Spring JDBC MVC 项目给出 404

Java:如果我在编程时遇到困难,我怎么知道去哪里查看文档?

java - DELETE 和 PUT 方法总是调用 POST

如果使用 @Transactional,则带有 jpa 存储库的 spring 应用程序不会启动

java - 根据 Spring MVC 中服务的结果验证单个字段