Performance: UserDetailsService implementation
MEDIUM IMPACT
This affects the authentication process speed and responsiveness during user login.
public class MyUserDetailsService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // Fetch user and roles in a single optimized query User user = userRepository.findUserWithRolesByUsername(username); return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), mapRolesToAuthorities(user.getRoles())); } }
public class MyUserDetailsService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // Fetch user from database with multiple queries User user = userRepository.findByUsername(username); List<Role> roles = roleRepository.findRolesByUserId(user.getId()); // Build UserDetails manually return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), mapRolesToAuthorities(roles)); } }
| Pattern | Database Queries | Authentication Delay | Server Load | Verdict |
|---|---|---|---|---|
| Multiple queries per login | 2+ queries | 50-100ms delay | High under load | [X] Bad |
| Single optimized query | 1 query | 10-20ms delay | Low | [OK] Good |