spring boot logged in user

  1. Add Spring Security Dependency: xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>

  2. Configure Spring Security in Application: java @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .formLogin() .and() .httpBasic(); } }

  3. Create a UserDetailsService: java @Service public class UserDetailsServiceImpl implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // Implement logic to load user details from the database } }

  4. Autowire AuthenticationManagerBuilder in SecurityConfig: java @Autowired public void configureGlobal(AuthenticationManagerBuilder auth, UserDetailsService userDetailsService) throws Exception { auth.userDetailsService(userDetailsService); }

  5. Access Logged-In User in Controller: java @RestController public class UserController { @GetMapping("/user") public String getCurrentUser(Authentication authentication) { return "Logged in user: " + authentication.getName(); } }

  6. Customize User Entity and Repository (Optional): ```java @Entity public class CustomUser extends User { // Add custom fields or methods if needed }

public interface CustomUserRepository extends JpaRepository { Optional findByUsername(String username); } ```

  1. Implement UserDetailsService with Custom Repository: ```java @Service public class CustomUserDetailsServiceImpl implements UserDetailsService { @Autowired private CustomUserRepository userRepository;

    @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { return userRepository.findByUsername(username) .orElseThrow(() -> new UsernameNotFoundException("User not found")); } } ```

  2. Update SecurityConfig to use Custom UserDetailsService: java @Autowired public void configureGlobal(AuthenticationManagerBuilder auth, CustomUserDetailsServiceImpl userDetailsService) throws Exception { auth.userDetailsService(userDetailsService); }

  3. Secure Endpoints based on Roles: java @PreAuthorize("hasRole('ADMIN')") @GetMapping("/admin") public String adminEndpoint() { return "Admin Access"; }

  4. Logout Configuration (Optional): java @Override protected void configure(HttpSecurity http) throws Exception { http .logout() .logoutRequestMatcher(new AntPathRequestMatcher("/logout")) .logoutSuccessUrl("/login"); }