我已经为标题困扰了几天,我很沮丧。我不知道我在做什么错,为什么我的实现无法正常工作。
让我告诉你我所拥有的:
自定义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();
}
我也一样。