문제

컨트롤러에서 토큰 인증만 하고 실제로 있는 유저가 존재하는지 확인하지 않고 진행시키면 문제가 발생할 수 있어 인증 권한이 필요한 테스트일 경우 항상 실제 유저와 일치하는지 확인할 필요가 있다.

현재 인증 과정

  1. Token이 헤더에 실려서 날라온다.
  2. 만약 로그인이 필요한 서비스라면 JwtAuthenticationFilter에서 Header를 필터에서 확인하고 만약 헤더가 있다면 UserId를 JwtAuthentication에서 꺼내쓸 수 있다.
  3. JwtAuthentication에는 userId와 JwtToken이 있다.

핵심

위의 경우들을 어디서 Validation을 하는지가 중요하다. 탈퇴를 전자, UD를 후자라고 정의하자.

만약 전자인 경우에는 jwt토큰에서 받아온 유저의 id가 존재하는지 UserRepository에서 확인해야 한다.

후자인 경우 jwt토큰에서 받은 유저의 id가 존재하는지 확인하고 존재한다면 다시 RidingPost를 UD하는 User와 일치하는지 확인해야 한다.

즉 필수적으로 확인할 것은 jwt토큰에서 받은 유저의 id가 존재하는지 확인해야 한다.

해결 방법

어제 지웠던 UserDetails와 UserDetailsService를 다시 만드는 것이다.