AuthenticationProvider

AuthenticationProvider

我已经为标题困扰了几天,我很沮丧。我不知道我在做什么错,为什么我的实现无法正常工作。

让我告诉你我所拥有的:

自定义AuthenticationProvider:

@Component
public class AuthProvider implements AuthenticationProvider {

    private Logger logger = LoggerFactory.getLogger(AuthProvider.class);

    public AuthProvider() {
        logger.info("Building...");
    }

    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
        logger.info("Authenticate...");
        return null;
    }

    public boolean supports(Class<?> authentication) {
        logger.info("Supports...");
        return true;
    }
}

WebSecurity配置:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private AuthProvider authProvider;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authProvider);
    }

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests().anyRequest().authenticated();
    }
}

如您所见,我已经将记录器添加到AuthenticationProvider中,但是没有一个记录器被调用。

我尝试过的
  • @Autowired添加到configure
  • AuthenticationManagerBuilder
  • @EnableGlobalMethodSecurity(prePostEnabled=true)添加到类
  • 将自定义AuthenticationProvider直接添加到HttpSecurity

  • 我如何测试它:

    通过IntelliJ进行
  • 调试-没有结果,没有断点被调用。
  • 运行应用程序并发送请求-也没有结果,没有日志,什么也没有。

  • 请大家以某种方式帮助我。我没有精力了。我讨厌在那些本该起作用的事情上浪费太多时间:(

    最佳答案

    您可能错过了WebSecurityConfigurerAdapter中的以下方法:

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }
    

    我也一样。

    10-07 23:33