在我們進行登錄時,如果用戶數據來自不同的表,在一個表中查不到就去另一個表查,我們就需要配置多個數據源
經過(五)的分析,我們知道了認證需要經過ProviderManager,ProviderManager對應多個AuthenticationProvider,而每個AuthenticationProvider都對應一個UserDetailsService,每個UserDetailsService對應一個數據源
我們只需要編寫多個UserDetailsService即可,我們以賬號/密碼登錄方式為例
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
MyUserDetailsService1 userDetailsService1;
@Autowired
MyUserDetailsService2 userDetailsService2;
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception{
//創建多個AuthenticationProvider,並為他們注入UserDetailsService
DaoAuthenticationProvider dao1=new DaoAuthenticationProvider();
dao1.setUserDetailsService(userDetailsService1);
DaoAuthenticationProvider dao2=new DaoAuthenticationProvider();
dao2.setUserDetailsService(userDetailsService2);
//創建ProviderManager,並注入AuthenticationProvider
ProviderManager manager=new ProviderManager(dao1,dao2);
return manager;
}
}