88import org .springframework .security .core .Authentication ;
99import org .springframework .security .core .context .SecurityContextHolder ;
1010import org .springframework .security .oauth2 .client .authentication .OAuth2AuthenticationToken ;
11+ import org .springframework .stereotype .Component ;
1112import org .springframework .web .filter .OncePerRequestFilter ;
1213
1314import com .example .log4u .common .oauth2 .dto .CustomOAuth2User ;
1819import io .jsonwebtoken .ExpiredJwtException ;
1920import jakarta .servlet .FilterChain ;
2021import jakarta .servlet .ServletException ;
22+ import jakarta .servlet .http .Cookie ;
2123import jakarta .servlet .http .HttpServletRequest ;
2224import jakarta .servlet .http .HttpServletResponse ;
25+ import lombok .NonNull ;
2326import lombok .RequiredArgsConstructor ;
27+ import lombok .extern .slf4j .Slf4j ;
2428
2529@ RequiredArgsConstructor
30+ @ Slf4j
2631public class JwtAuthenticationFilter extends OncePerRequestFilter {
2732 private final JwtUtil jwtUtil ;
28-
2933 private final UserService userService ;
3034
31- @ Value ("${jwt.access-token-expiration -time-seconds}" )
35+ @ Value ("${jwt.access-token-expire -time-seconds}" )
3236 private long accessTokenValiditySeconds ;
3337
34- @ Value ("${jwt.refresh-token-expiration -time-seconds}" )
38+ @ Value ("${jwt.refresh-token-expire -time-seconds}" )
3539 private long refreshTokenValiditySeconds ;
3640
3741 @ Override
38- protected void doFilterInternal (HttpServletRequest request , HttpServletResponse response ,
39- FilterChain filterChain ) throws ServletException , IOException {
42+ protected void doFilterInternal (
43+ HttpServletRequest request ,
44+ @ NonNull HttpServletResponse response ,
45+ @ NonNull FilterChain filterChain
46+ ) throws ServletException , IOException {
47+ String requestUri = request .getRequestURI ();
48+ if (requestUri .matches ("^\\ /login(?:\\ /.*)?$" )) {
49+ filterChain .doFilter (request , response );
50+ return ;
51+ }
52+ if (requestUri .matches ("^\\ /oauth2(?:\\ /.*)?$" )) {
53+ filterChain .doFilter (request , response );
54+ return ;
55+ }
4056
41- // 헤더에서 access키에 담긴 토큰 추출
42- String accessToken = request .getHeader ("access" );
57+ // 쿠키에서 access키에 담긴 토큰 추출
58+ String accessToken = null ;
59+ Cookie [] cookies = request .getCookies ();
60+ for (Cookie cookie : cookies ){
61+ if (cookie .getName ().equals ("access" )) {
62+ accessToken = cookie .getValue ();
63+ }
64+ }
4365
4466 // 토큰이 없다면 다음 필터로 넘겨서 발급 받아야함
4567 if (accessToken == null ) {
4668 filterChain .doFilter (request , response );
4769 return ;
4870 }
4971
72+ log .info ("필터에서 추출한 access: " + accessToken + "\n " );
73+
74+
5075 // 토큰 만료 확인, 만료 시 다음 필터로 넘기지 않음(재발급 필요)
5176 try {
77+ System .out .println ("만료확인" );
5278 jwtUtil .isExpired (accessToken );
79+ System .out .println ("category : " + jwtUtil .getCategory (accessToken ));
80+ System .out .println ("userId : " + jwtUtil .getUserId (accessToken ));
81+ System .out .println ("role : " + jwtUtil .getRole (accessToken ));
5382 } catch (ExpiredJwtException e ) {
5483 PrintWriter writer = response .getWriter ();
5584 writer .print ("토큰이 만료되었습니다." );
@@ -68,10 +97,13 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
6897 return ;
6998 }
7099
100+
71101 // userId, role
72102 Long userId = jwtUtil .getUserId (accessToken );
73103
74104 CustomOAuth2User customOAuth2User = new CustomOAuth2User (userService .getUserById (userId ));
105+ log .info ("필터에서 추출한 userId: " + userId );
106+ log .info ("생성된 CustomOAuth2User ID: " + customOAuth2User .getUserId ());
75107
76108 // security context holder 에 추가해줌
77109 Authentication oAuth2Token = new UsernamePasswordAuthenticationToken (
0 commit comments