我已经在标题上挣扎了好几天了,我很沮丧。我不知道我做错了什么以及为什么我的实施不起作用。
让我告诉你我有什么:
Custom 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
我是如何测试的:
请伙计们以某种方式帮助我。我失去了能量。我讨厌在应该工作的事情上浪费那么多时间:(
答案 0 :(得分:3)
您可能错过了WebSecurityConfigurerAdapter中的以下方法:
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
同样的事发生在我身上。
答案 1 :(得分:0)
使用 isAssignableFrom()
方法代替 ==
或 equals
我们得到真值,然后流将通过 authenticate()
override fun supports(authentication: Class<*>): Boolean {
return UsernamePasswordAuthenticationToken::class.java.isAssignableFrom(authentication)
}
GL