[QnA 게시판] Spring Security 적용 → 로그인 사용자 정보 가져오기

Updated:

Categories:

Tags: , ,

📌 개인적인 공간으로 공부를 기록하고 복습하기 위해 사용하는 블로그입니다.
정확하지 않은 정보가 있을 수 있으니 참고바랍니다 :😸
[틀린 내용은 댓글로 남겨주시면 복받으실거에요]

Spring Security 적용 → 로그인 사용자 정보 가져오기

[요약] Security 인증 인가에 대한 로직

로직을 다시 상기시켜보면

  1. LoginDto로 들어온 로그인 정보(username, password)는 UsernamePasswordAuthenticationFilter 를 확장한 JwtAuthenticationFilter 클래스의 attemptAuthentication 메서드를 통해 인증 토큰을 생성하고
  2. 인증에 성공했다면 아래 메서드를 통해서 사용자정보를 JWT로 생성하고 Authentication이 토큰을 응답헤더에 추가한다.

  3. 그 다음 OncePerRequestFilter 를 확장한 JwtVerifiedFilter 클래스에서 JWT를 검증한 후 검증에 성공하면

  4. setAuthenticationToContext를 통해 Authentication에 담을 정보들을 담고 저장한다.

로그인 중인 사용자 가져오는 법

Spring Security를 통해서 인증인가 구현했기 때문에, 기존에 requestParam 또는 body 등으로 들어오던 memberId를 벗겨냈다.

그럼 어떻게 인증정보를 가져올 수 있냐면 로그인에 성공한 사용자는 SecurityContextHolder에 토큰이 Authentication이 저장되어있다, 그럼 우리는 Authentication에 담겨있는 토큰정보 즉 username(email)을 가져올 수 있음 이것을 통해 멤버를 검증할 수 있다.

  1. Contoller

  2. Service

    회원만 질문을 가능하기 때문에 memberId를 받아야 하는데 기존에 RequestBody에서 받았던 것을 Authentication으로 받아 올 수 있게 되었다.

  3. 로그인 후 Post 까지 성공

Project 카테고리 내 다른 글 보러가기

Leave a comment