• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

백엔드에서 로그인 인증

22.01.05 18:27 작성 조회수 299

0

우선 로그인시 setCookie잘 작동하고 로그인 성공시 connect.sid가 쿠키에 잘 저장이됩니다.

 

그 이후 로그인이 되어있어야 할 수 있는 기능을 사용 시 로그인이 필요하다고 합니다.

프론트에서 withCredentials 옵션은 true이고 

백에서 req.signedCookies랑 req.user를 찍어보면 각각 암호화된 connect.sid와 undefined가 뜹니다.

 

실제로 요청헤더에도 쿠키가 잘 들어가 있고 백에서도 이 쿠키를 잘 받아옵니다.

쿠키가 백까지 잘 넘어오는데 로그인 인증이 안될 경우 어떻게 접근해야하나요?

쿠키파서랑 세션에서 시크릿키 모두 process.env.COOKIE_SECRET으로 같습니다,

답변 1

답변을 작성해보세요.

0

일단 프론트서버, 백엔드서버 도메인이 같나요?

그리고 req.user을 만들어주는 deserializeUser 코드에 문제가 없나요?

권범수님의 프로필

권범수

질문자

2022.01.05

네 도메인 같습니다. 
req.user 만들어주는 deserializeUser도 문제가 없습니다 (개발모드에서는 인증이 정상적으로 잘 됩니다.)

권범수님의 프로필

권범수

질문자

2022.01.05

postman으로 로그인하고 인증 시에는 정상적으로 작동하는데 이러면 프론트쪽 코드가 문제가 있는 걸까요?

권범수님의 프로필

권범수

질문자

2022.01.05

connect.sid가 넘어오긴하는데 다시 확인해보니 false가 찍히네요.

권범수님의 프로필

권범수

질문자

2022.01.05

도메인이 문제인 것 같습니다.

권범수님의 프로필

권범수

질문자

2022.01.05

지금 해결하려고 하다가 이해가 안가는 부분이 있는데 ssr시 dispatch로 서버에 요청시에는 유저 인증이 잘됩니다. connect.sid 도 잘 넘어오고 req.user도 잘 생성됩니다.

그런데 로그아웃이나 이벤트로 인해 서버에 요청하게 되면 유저 인증을 하지 못합니다.
connect.sid false고 req.user도 생성이 안됩니다.

getServerSideProps에서 axios.default.headers.Cookie를 초기화하고 store.dispatch시에는 유저 인증이 되는데 로그아웃같이 버튼 이벤트 리스터에 dispatch를 하면 유저인증이 안되는데 애초에 getServerSideProps에서 초기화한 axios.default.headers.Cookie는 페이지 접근 시  부터 설정되어있어서 이벤트로 dispatch를 하던 초기에 dispatch를 하던 상관없지 않나요?

왜 ssr시에는 유저가 인증이 되고 이벤트시에는 되지 않는지 이해가 되지 않습니다.

권범수님의 프로필

권범수

질문자

2022.01.05

api.domain 에 저장된 쿠키가 .domain으로 인식되어서 connect.sid 두개가 같이 가서 생긴 오류였네요 api.domain에 저장된 쿠키를 삭제하니 해결됬습니다.