Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WEEK6] 기본 과제 & 도전 과제 제출 #7

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open

Conversation

jelliijoa
Copy link
Collaborator

@jelliijoa jelliijoa commented May 26, 2023

🫧 SERVER PR

@GO-SOPT-SERVER/kosyullaeng

✨ 과제 구현 명세

기본 과제

  • JwtService에서 JWT 토큰 발급 및 인증 구현
  • 로그인을 위한 UserLoginRequestDtoUserLoginResponseDto 작성
  • UserController에 로그인 메서드 추가
  • UserService에서 로그인 관련 로직 처리
  • ErrorSuccess에 로그인 관련 리턴값 추가
  • BoardRequestDto에서 발급 받은 토큰을 헤더에 담아서 게시물 생성 요청 구현
  • BoardController에서 이메일 대신 @RequestHeader 어노테이션으로 Authorization 키 값의 데이터를 가져오고, getJwtContents 메서드를 사용해서 유저 아이디를 가져온 후 서비스단으로 넘겨줌
  • BoardService에서는 컨트롤러에서 받아온 유저 아이디로 유저를 조회하고 게시물 생성을 위해 유저 객체를 넘겨줌

심화 과제

  • 로그인 시 Access TokenRefresh Token 발급 (Access 토큰만 클라이언트 쿠키에 저장 & Access 토큰과 Refresh 토큰을 레디스에 저장)
  • 클라이언트는 API를 호출할 때마다 발급받은 Access Token을 활용하여 요청
  • 토큰을 사용하던 중, 만료되어 Invalid Token Error가 발생한다면 사용자가 보낸 Access Token으로 Redis의 Refresh Token을 찾아보고 Refresh 토큰이 유효하다면, Access Token을 다시 발급해 줌
  • Redis에 Refresh Token과 짝을 이루는 Access Token을 새로 발급한 토큰으로 업데이트


image image

🐥 이런 점이 새로웠어요 / 어려웠어요

  • 토큰과 세션이 처음 접해보는 개념이라 어렵고 신선했습니다.
  • JwtService에서 사용한 메서드들이 익숙하지 않아서, 열심히 사용해보고 익숙해져야 할 것 같습니다
  • Redis를 사용해서 refresh 사용해보는 게 어려웠는데, 구글링 해 보고 나름대로 고쳐 본 누덕누덕..기워진..코드라서 자세히 뜯어보면서 이해가 좀 더 필요할 것 같네요!

@jelliijoa jelliijoa requested review from dev-Crayon and a team May 26, 2023 09:16
@jelliijoa jelliijoa changed the title Week6 [WEEK6] 기본 과제 제출 May 26, 2023
@jelliijoa jelliijoa changed the title [WEEK6] 기본 과제 제출 [WEEK6] 기본 과제 & 도전 과제 제출 Jun 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant