Vrstva služeb
Musíte vytvořit samostatnou service
implementace org.springframework.security.core.userdetails.UserDetailsService
a vložte jej do AuthenticationManagerBuilder
.
@Component
public class SecUserDetailsService implements UserDetailsService{
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
/*Here add user data layer fetching from the MongoDB.
I have used userRepository*/
User user = userRepository.findByUsername(username);
if(user == null){
throw new UsernameNotFoundException(username);
}else{
UserDetails details = new SecUserDetails(user);
return details;
}
}
}
Model
UserDetails
Mělo by být také implementováno. Toto je POJO, které do jara uchová údaje ověřené uživatelem. Můžete do něj zabalit svůj datový objekt Entity, jak jsem to udělal já.
public class SecUserDetails implements UserDetails {
private User user;
public SecUserDetails(User user) {
this.user = user;
}
......
......
......
}
Konfigurace zabezpečení
Automaticky propojte službu, kterou jsme vytvořili dříve, a nastavte ji v AuthenticationManagerBuilder
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
SecUserDetailsService userDetailsService ;
@Autowired
public void configAuthBuilder(AuthenticationManagerBuilder builder) throws Exception {
builder.userDetailsService(userDetailsService);
}
}