diff --git a/src/main/java/co/jp/app/config/security/SecurityConfig.java b/src/main/java/co/jp/app/config/security/SecurityConfig.java index 85642a6..131727c 100644 --- a/src/main/java/co/jp/app/config/security/SecurityConfig.java +++ b/src/main/java/co/jp/app/config/security/SecurityConfig.java @@ -4,6 +4,7 @@ import co.jp.app.config.security.filter.JwtAuthenticationFilter; import co.jp.app.service.UserService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.dao.DaoAuthenticationProvider; @@ -11,6 +12,7 @@ import org.springframework.security.config.annotation.authentication.configurati import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; @@ -20,11 +22,11 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic public class SecurityConfig { private final JwtAuthenticationFilter jwtAuthenticationFilter; - private final UserService userService; + private final UserDetailsService userDetailsService; - public SecurityConfig(JwtAuthenticationFilter jwtAuthenticationFilter, UserService userService) { + public SecurityConfig(@Lazy JwtAuthenticationFilter jwtAuthenticationFilter, @Lazy UserDetailsService userDetailsService) { this.jwtAuthenticationFilter = jwtAuthenticationFilter; - this.userService = userService; + this.userDetailsService = userDetailsService; } @Bean @@ -35,7 +37,7 @@ public class SecurityConfig { @Bean public AuthenticationProvider authenticationProvider() { DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider(); - authProvider.setUserDetailsService(userService); + authProvider.setUserDetailsService(userDetailsService); authProvider.setPasswordEncoder(passwordEncoder()); return authProvider; } diff --git a/src/main/java/co/jp/app/config/security/filter/JwtAuthenticationFilter.java b/src/main/java/co/jp/app/config/security/filter/JwtAuthenticationFilter.java index b2e857f..7102e75 100644 --- a/src/main/java/co/jp/app/config/security/filter/JwtAuthenticationFilter.java +++ b/src/main/java/co/jp/app/config/security/filter/JwtAuthenticationFilter.java @@ -1,16 +1,17 @@ package co.jp.app.config.security.filter; -import co.jp.app.service.UserService; import co.jp.app.service.JwtService; import java.io.IOException; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.springframework.context.annotation.Lazy; import org.springframework.lang.NonNull; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; @@ -20,11 +21,11 @@ import org.springframework.web.filter.OncePerRequestFilter; public class JwtAuthenticationFilter extends OncePerRequestFilter { private final JwtService jwtService; - private final UserService userService; + private final UserDetailsService userDetailsService; - public JwtAuthenticationFilter(JwtService jwtService, UserService userService) { + public JwtAuthenticationFilter(JwtService jwtService, UserDetailsService userDetailsService) { this.jwtService = jwtService; - this.userService = userService; + this.userDetailsService = userDetailsService; } @Override @@ -44,7 +45,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter { username = jwtService.extractUsername(jwt); if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { - UserDetails userDetails = this.userService.loadUserByUsername(username); + UserDetails userDetails = this.userDetailsService.loadUserByUsername(username); if (jwtService.isTokenValid(jwt, userDetails)) { UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());