@@ -44,37 +44,40 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
4444 String authorization = wrappedRequest .getHeader ("Authorization" );
4545 String username = "" , token = "" ;
4646
47- if ( authorization != null && authorization . startsWith ( "Bearer " )) { // Bearer 토큰 파싱
48- token = authorization .substring ( 7 ); // jwt token 파싱
49- try {
47+ try {
48+ if ( authorization != null && authorization .startsWith ( "Bearer " )) { // Bearer 토큰 파싱
49+ token = authorization . substring ( 7 ); // jwt token 파싱
5050 username = jwtUtil .getUsernameFromToken (token ); // username 가져옴
51- } catch (ExpiredJwtException e ) {
52- filterChain .doFilter (wrappedRequest , response );
53- return ;
54- }
5551
56- // 현재 SecurityContextHolder에 인증객체가 있는지 확인
57- if (username != null && SecurityContextHolder .getContext ().getAuthentication () == null ) {
58- UserDetails userDetails ;
59- try {
60- userDetails = userDetailsService .loadUserByUsername (username );
61- } catch (CustomException e ) {
62- userDetails = userDetailsService .loadUserByKakaoId (username );
63- }
52+ // 현재 SecurityContextHolder에 인증객체가 있는지 확인
53+ if (username != null && SecurityContextHolder .getContext ().getAuthentication () == null ) {
54+ UserDetails userDetails ;
55+ try {
56+ userDetails = userDetailsService .loadUserByUsername (username );
57+ } catch (CustomException e ) {
58+ userDetails = userDetailsService .loadUserByKakaoId (username );
59+ }
6460
65- // 토큰 유효성 검증
66- if (jwtUtil .isValidToken (token , userDetails )) {
67- UsernamePasswordAuthenticationToken authenticated
68- = new UsernamePasswordAuthenticationToken (userDetails , null , userDetails .getAuthorities ());
61+ // 토큰 유효성 검증
62+ if (jwtUtil .isValidToken (token , userDetails )) {
63+ UsernamePasswordAuthenticationToken authenticated
64+ = new UsernamePasswordAuthenticationToken (userDetails , null , userDetails .getAuthorities ());
6965
70- authenticated .setDetails (new WebAuthenticationDetailsSource ().buildDetails (wrappedRequest ));
71- SecurityContextHolder .getContext ().setAuthentication (authenticated );
66+ authenticated .setDetails (new WebAuthenticationDetailsSource ().buildDetails (wrappedRequest ));
67+ SecurityContextHolder .getContext ().setAuthentication (authenticated );
7268
73- // 토큰 갱신
74- String newAccessToken = jwtUtil .generateToken (userDetails ).getAccessToken ();
75- response .setHeader ("Authorization" , "Bearer " + newAccessToken );
69+ // 토큰 갱신
70+ String newAccessToken = jwtUtil .generateToken (userDetails ).getAccessToken ();
71+ response .setHeader ("Authorization" , "Bearer " + newAccessToken );
72+ }
7673 }
74+ } else {
75+ request .setAttribute ("JWTException" , new CustomException (ErrorCode .JWT_NOT_FOUND ));
7776 }
77+ } catch (ExpiredJwtException e ) {
78+ request .setAttribute ("JWTException" , new CustomException (ErrorCode .JWT_EXPIRED ));
79+ } catch (Exception e ) {
80+ request .setAttribute ("JWTException" , new CustomException (ErrorCode .INVALID_CREDENTIALS ));
7881 }
7982
8083 filterChain .doFilter (wrappedRequest , response );
0 commit comments