Есть конфиг в Spring Security:
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder authBuilder) throws Exception {
authBuilder
.userDetailsService(userDetailsService())
.passwordEncoder(passwordEncoder());
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public UserDetailsService userDetailsService() {
return new CustomUserDetailsService();
}
}
Далее имплементация интерфейса UserDetailsService:
public class CustomUserDetailsService implements UserDetailsService {
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
User user = userRepository.findByEmail(email);
if(Objects.nonNull(user)) {
List<SimpleGrantedAuthority> authorities = user.getRoles().stream()
.map(Role::getRole)
.map(SimpleGrantedAuthority::new)
.collect(Collectors.toList());
return new CustomUserDetails(user.getId(), email, user.getPassword(), user.isActive(), true,
true, true, authorities);
} else {
throw new UsernameNotFoundException();
}
}
}
Мне не очень понятно какую функцию выполняет именно вариация метода void configure(AuthenticationManagerBuilder authBuilder). Просьба описать пошагово как происходит отработка такой функциональности от точки входа и до конца, то есть нужен такой себе сценарий.
Продвижение своими сайтами как стратегия роста и независимости