@@ -33,33 +33,30 @@ protected void doFilterInternal(
3333
3434 final String authHeader = request .getHeader ("Authorization" );
3535
36- if (authHeader == null ) {
36+ if (authHeader == null || ! authHeader . startsWith ( "Bearer " ) ) {
3737 filterChain .doFilter (request , response );
3838 return ;
3939 }
4040
41- Long memberId = null ;
4241 try {
43- memberId = jwtProvider .getMemberIdAndValidateToken (authHeader );
42+ Long memberId = jwtProvider .getMemberIdAndValidateToken (authHeader );
43+ if (SecurityContextHolder .getContext ().getAuthentication () == null ) {
44+ UserDetails userDetails = this .userDetailsService .loadUserByUsername (memberId .toString ());
45+ UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken (
46+ userDetails ,
47+ null ,
48+ userDetails .getAuthorities ()
49+ );
50+ authToken .setDetails (
51+ new WebAuthenticationDetailsSource ().buildDetails (request )
52+ );
53+ SecurityContextHolder .getContext ().setAuthentication (authToken );
54+ }
4455 } catch (Exception e ) {
56+ // Bearer 토큰이 있지만 유효하지 않은 경우, 컨텍스트를 비워서 인증되지 않은 상태로 만듭니다.
4557 SecurityContextHolder .clearContext ();
4658 }
4759
48- if (memberId != null && SecurityContextHolder .getContext ().getAuthentication () == null ) {
49- UserDetails userDetails = this .userDetailsService .loadUserByUsername (memberId .toString ());
50-
51- UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken (
52- userDetails ,
53- null ,
54- userDetails .getAuthorities ()
55- );
56- authToken .setDetails (
57- new WebAuthenticationDetailsSource ().buildDetails (request )
58- );
59-
60- SecurityContextHolder .getContext ().setAuthentication (authToken );
61- }
62-
6360 filterChain .doFilter (request , response );
6461 }
6562}
0 commit comments