[QnA 게시판] Spring Security 적용 → 로그인 사용자 정보 가져오기
Categories: Project
📌 개인적인 공간으로 공부를 기록하고 복습하기 위해 사용하는 블로그입니다.
정확하지 않은 정보가 있을 수 있으니 참고바랍니다 :😸
[틀린 내용은 댓글로 남겨주시면 복받으실거에요]
Spring Security 적용 → 로그인 사용자 정보 가져오기
[요약] Security 인증 인가에 대한 로직
로직을 다시 상기시켜보면
- LoginDto로 들어온 로그인 정보(username, password)는
UsernamePasswordAuthenticationFilter
를 확장한JwtAuthenticationFilter
클래스의attemptAuthentication
메서드를 통해 인증 토큰을 생성하고 -
인증에 성공했다면 아래 메서드를 통해서 사용자정보를 JWT로 생성하고 Authentication이 토큰을 응답헤더에 추가한다.
-
그 다음
OncePerRequestFilter
를 확장한JwtVerifiedFilter
클래스에서 JWT를 검증한 후 검증에 성공하면 -
setAuthenticationToContext를 통해 Authentication에 담을 정보들을 담고 저장한다.
로그인 중인 사용자 가져오는 법
Spring Security를 통해서 인증인가 구현했기 때문에, 기존에 requestParam 또는 body 등으로 들어오던 memberId를 벗겨냈다.
그럼 어떻게 인증정보를 가져올 수 있냐면 로그인에 성공한 사용자는 SecurityContextHolder에 토큰이 Authentication이 저장되어있다, 그럼 우리는 Authentication에 담겨있는 토큰정보 즉 username(email)을 가져올 수 있음 이것을 통해 멤버를 검증할 수 있다.
-
Contoller
-
Service
회원만 질문을 가능하기 때문에 memberId를 받아야 하는데 기존에 RequestBody에서 받았던 것을 Authentication으로 받아 올 수 있게 되었다.
-
로그인 후 Post 까지 성공
Leave a comment