passport 카카오 로그아웃 구현중 req.user이슈

대프리카생존자·2023년 8월 29일
0
post-thumbnail

1. 문제

내가 이해한 passport 로그인 과정
1. 카카오 로그인 클릭
2. passport.authenticate 메서드호출
3. 카카오 로그인 전략수행
4. 로그인 성공시 serializeUser메서드 호출
5. 세션생성
6. 브라우저에 sid세션쿠키 전송
7. 로그인완료
8. 브라우저 렌더링수행 직전
9. rtk query를 통해 백엔드측에 user정보를 요청하는 req수행
10. 브라우저에서 보낸 세션쿠키를 이용하여 알맞은 세션객체를 찾아서 req.user객체생성
11. 백엔드측에서 알맞은 라우터를 찾아 컨트롤러 수행
12. 클라이언트측에 user정보 응답
13. 메인화면의 Header에 사용자 정보를 포함한 컴포넌트 렌더링
14. 하지만 Header컴포넌트에서 사용자 정보를 포함하지 않음

2. 문제해결과정

  1. 로그인이 되는지 확인
  • 로그인 전략에서 로그인을 수행했을시 console.log에 정보를 띄우도록 하여 로그인 완료 확인
  1. 유저정보를 어디서 잃어버렸는가
  • 로그인전략 수행완료후 수행하는 조건문에서는 req.user가 만들어지는것을 확인
  1. 유저정보를 가져오는 라우터에서는 req.user가 출력되는가
  • 유저정보를 가져오는 컨트롤러에서 제대로 req.user객체가 만들어졌는지 console.log로 확인후 여기서 문제가 일어나는것을 추측
  1. 로그인도 잘되고, 로그인후 req.user객체도 잘만들어지고, 콘솔에 에러도 안뜨는데 왜 유저정보를 가져오는 라우터만 작동을 안하는것인가
  • 프론트측에서 rtk query쪽의 문제이거나 로그인전략후 수행하는 백엔드 코드에서 문제가 생겼음을 추측
  1. rtk query의 문제인가?
  • 기존에 로그인을 구현할때 썻던코드 그대로이기때문에 문제없음
  1. 백엔드 코드의 문제인데 도대체 뭐가 문제인가
    -??????????????

3. 정답

  • 로그인 전략을 수행할때 쓰는 "전략코드","serialize"코드는 잘작동함
  • 모든 요청을 처리하는 deserialize에서 뭔가 중간에 문제가 생겼음을 생각함
  • 데이터 접근방법이 잘못됨

    👆👆👆👆👆👆👆👆👆👆문제의 코드👆👆👆👆👆👆👆👆👆👆

    👆👆👆👆👆👆👆👆👆👆문제해결의 코드👆👆👆👆👆👆👆👆👆

- serialize코드의 데이터 접근이 잘못되었음..sereailize메서드를 통해 세션객체를 만들어서 desrialize메서드에서 그것을 참조하는데 serealize메서드에서 세션객체를 잘못만들었따 에러를 뿜어내지도 않는데 작동되지않는 코드가 디버깅하기 참 힘들다

profile
`${n}번의 고비를 넘긴 기록`

0개의 댓글