Разница заключается в одном способе аутентификации (DaoAuthenticationProvider) по сравнению с открытием большего количества вариантов (AuthenticationManagerBuilder). Настройка DaoAuthenticationProvider означает, что вы выбираете «Dao» / «userDetailService» для аутентификации ваших пользователей. Spring Security использует Authentication Manager для аутентификации, а ProviderManager является менеджером аутентификации по умолчанию, который выполняет запрос аутентификации через список AuthenticationProviders. И DaoAuthenticationProvider является одним из них.
Конфигурируя менеджер аутентификации с помощью метода: configure (AuthenticationManagerBuilder Auth) У вас больше гибкости, вы можете настроить менеджер аутентификации для использования вашего настроенного провайдера аутентификации. (и вы CustomAuthenticationProvider реализует интерфейс AuthenticationProvider)
@Autowired
private CustomAuthenticationProvider customAuthProvider;
@Override
public void configure(AuthenticationManagerBuilder auth) {
auth.authenticationProvider(customAuthProvider);
}
И вы также можете настроить DaoAuthenticationProvider, просто предоставив userdetailservice, так как AuthenticationManagerBuilder подключит его.
@Autowired
private CustomUserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
с этим сказанным использование AuthenticationManagerBuilder встречается гораздо чаще, поскольку его можно использовать для настройки различных типов поставщиков аутентификации.