본문 바로가기

내일배움캠프/Today I Learned

[TIL] 나의 마흔 네번째 회고록

Today Error


혼자 만드는 게시판 Error 1탄

 

디테일한 부분까지 하나하나 찾아보면서 다시 만들다보니

새로운 에러들을 많이 만나게 되었다. 

 

특히 Spring Security를 구현하면서

Jwt토큰을 발행하고

Jwt 인증하면서 userDetailService.loadUserByUsername(username); 에서

return하는 값이 null인 것이다.

	// JWT 토큰에서 인증 정보 조회
    public Authentication getAuthentication(String username) {
        UserDetails userDetails = userDetailsService.loadUserByUsername(username);
        return new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
    }

 

SecurityConfig.java에서 JwtFilter를 잘 타고 내려오는 것도 확인을 하고

파라미터로 넘어간 username값이 잘 들어오는 것도 확인했는데 

아무리 userDetails에 들어있는 값을 찍어도 null이 나오는 것이었다. 

 

그렇다면 userDetailsService interface를 들어가봐도 

딱히 로직이 잘못된 부분을 찾지 못했었다. 

 

그러던중!!

아........................

 

실컷...UserDetailsServiceImpl.java파일에 

 UserDetailsService를 implements해서 구현해놓고

 

UserDetailsService를 interface를 그대로 가져다가 사용하고 있었다니....

userDetailService.loadUserByUsername(username);

그러니까 아규먼트 값으로 넣어준 username이 들어가지 않았던 것 같다.

 

다시 UserDetailsService를 구현해놓은

'구현 클래스'인 UserDetailServiceImpl.java 파일을 가져다 사용할 수 있도록 선언해준 다음

PostMan을 사용하여 UserDetail에 값이 잘 들어가는지 확인해주었더니 

값이 정상적으로 담기는 것을 확인 할 수 있었다.