Услуген слой
Трябва да създадете отделна service
внедряване на org.springframework.security.core.userdetails.UserDetailsService
и го инжектирайте вътре в 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;
}
}
}
Модела
UserDetails
Трябва също да се приложи. Това е POJO, който ще запази автентифицираните от потребителя данни до пролетта. Можете да включите вашия обект с данни Entity, обвит вътре в него, както направих аз.
public class SecUserDetails implements UserDetails {
private User user;
public SecUserDetails(User user) {
this.user = user;
}
......
......
......
}
Конфигурация за сигурност
Автоматично свързване на услугата, която създадохме преди, и я настройваме в AuthenticationManagerBuilder
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
SecUserDetailsService userDetailsService ;
@Autowired
public void configAuthBuilder(AuthenticationManagerBuilder builder) throws Exception {
builder.userDetailsService(userDetailsService);
}
}