20240111 (목) 뉴스피드 프로젝트

2024. 1. 11. 20:45TIL

https://github.com/LSW990918/NewsFeedProject/issues/6

 

JWT Token userId get 방식 · Issue #6 · LSW990918/NewsFeedProject

Description 현재 dev branch에 올라온 코드로 회원가입, 로그인이 가능해졌습니다. 다음 단계로 로그인 후 나오는 JWT 토큰에서 userId를 꺼내 post, comment, postLike의 CUD에 사용해야 할 것으로 보입니다. 지

github.com

오늘은 우리 팀원이 작성한 JWT토큰 방식에서 userId를 얻어오는 방법에 대해 이슈가 있었다.

일단 처음에는 userId 가 토큰에 담겨있지 않았기에 작동은 제대로 안됐다.

(userId를 받아오려는 이유는 이것이 각각의 row마다 고유한 key이기 때문)

 

해결책으로 3가지가 나왔다.

  1. org.springframework.security.core.userdetails.User 객체가 아닌 User 도메인의 User로 바로 받아올 수 있게 수정.
  2. org.springframework.security.core.userdetails.User 객체를 그대로 사용하고 프로퍼티 중 하나에 userId 값을 입력.
  3. 현재 코드를 유지하고 받아온 객체의 email을 이용해 userId 값을 db에서 조회.

나로서는 각각의 장점, 단점같은 세세한 사항은 몰랐는데 고맙게도 팀원이 친절하게 알려주셨다.

 

윤승환 팀원 왈 

저도 2번이 제일 편할 것 같긴한데 저 객체의 어떤 프로퍼티에 넣어야 맞을지는 좀 더 생각해봐야 할 것 같습니다.
1번 방식의 경우 스프링 시큐리티에서 저런 기능을 제공하는지 알아봐야 하고 개발 복잡성이 늘어날 것 같고,
3번 방식은 db조회가 한번 더 이뤄져야 하는게 단점일 것 같아요

 

일단 우리가 선택한것은 2번이라

회원가입 쪽을 맡아주셨던 류영우 팀원이 이렇게 남겨주셨다.

기존 User클래스 (org.springframework.security.core.userdetails.User) 에 있는 password 프로퍼티에 userId를 추가하는 방법으로 변경했습니다.

 

이로써 기존의 PostController, CommentController 부분을 수정해주고 오늘 코딩은 마무리하였다.

 

오늘의 한마디 : 이렇게 나보다 코드를 잘짜는 사람이랑 같은 팀이 되는것도 한수 배우는 느낌이라서 좋다.