• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

getUser 관련

24.02.06 09:06 작성 조회수 165

0

안녕하세요 제로초님! 다음과 같이 로그인후 바로 me를 호출하도록했는데 undefined이 찍혀서 왜 유저값이 들어있지 않은지 잘 모르겠습니다.

 

 

스크린샷 2024-02-06 오전 8.57.40.png스크린샷 2024-02-06 오전 8.57.46.png

스크린샷 2024-02-06 오전 9.06.02.png

 

axios에서 withCredential tue 넣었고 쿠키에 세션값이 저장되

고 보낼때 header에 들어간것까지 확인했습니다. 제가 놓친 부분이나 누락한 부분이 있을까요?
deserializeUser가 실행이 안되는거 같은데 이유를 모르겠네요

답변 3

·

답변을 작성해보세요.

0

imageuser/me에 사용되는 @User 데코레이터인데 request에 cookie값이 담겨져있는데 생각해보면 request.user가 없는게 정상적으로 보이기도하는데 언제 passport가 req.user에 값을 넣어주는지 모르겠네요,,ㅠㅠ

0

resave, saveUninitialized, withCredentials 문제는 아닌거 같습니다 deserializeUser가 실행되지 않는 이슈인거같네요

일단 findOne 컨트롤러에서 쿠키를 확인해보세요. deserializeUser가 호출 안되는 건 안에 콘솔로그같은거 찍어보신거죠? 호출 안 되는 이유는 쿠키쪽밖에 없습니다.

아 일단 유추되는 원인은 nextjs 14버전의 app router를 사용하는데(제로초님 강의 듣고 있습니다,,ㅎ) server에서 코드가 실행되면서 cookie가 안담겼다가 클라에서 다시 실행될때 담기는거 같네요 그래서 화면이 달라지는데 server에서도 쿠키가 넣어지도록 해야할거같네요. 혹시 쉬운 방법이 있을까요?

next쪽 하시는 거면 서버 fetch쪽에서

https://github.com/ZeroCho/next-app-router-z/blob/master/ch4/src/app/(afterLogin)/%5Busername%5D/_lib/getUserServer.ts#L10

이런 식으로 브라우저의 쿠키 가져와서 넣어주셔야 합니다.

fetch가 아닌 axios나 다른 요청 라이브러리도 마찬가지입니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.06

안녕하세요, 인프런 AI 인턴입니다.

웹개발자님, 제가 찾아본 바로는 deserializeUser가 실행되지 않는 문제는 여러 원인에 의해 일어날 수 있습니다. 그 중 하나는 세션과 관련된 문제가 가장 빈번히 발생하는 원인 중 하나인데요, 특히 Passport를 사용하여 인증을 처리할 때 deserializeUser 함수는 세션이 올바르게 설정되고 관리될 때만 호출됩니다.

문제 해결을 위해 먼저, express-session 및 passport 미들웨어의 구성이 올바르게 되어 있는지 확인할 필요가 있습니다. express-session 설정에서 resave, saveUninitialized 옵션의 값을 제대로 설정했는지, 그리고 secret을 올바르게 설정했는지 확인이 필요합니다. passport.initialize()passport.session() 미들웨어가 올바른 순서로 Express 앱에 추가되었는지도 확인해야 합니다.

다음으로, 프론트엔드 측에서 withCredentials: true를 설정한 것은 올바른 단계이며, 이렇게 설정한 경우 백엔드에서도 CORS 설정에서 credentials: true를 확인해야 합니다.

그러나 자세한 코드와 구성을 보지 않고는 정확한 문제점을 지적하는 것이 어렵습니다. 내용을 보면 NestJS와 TypeORM을 사용하는 과정에서 문제가 발생하신 것 같은데요, 아래에 유사한 경우에 대한 질문&답변 링크를 추천해 드리겠습니다. 해당 링크에서 비슷한 상황에 대한 문제 해결방법과 설명을 참고하시면 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.