강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

제이제이님의 프로필 이미지
제이제이

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

쿠키/세션과 전체 로그인 흐름.

쿠키파서, 세션

작성

·

217

0

제로님 혹시 cookie-parser 와 express-session 이 두개를 같이 설치해야하는 이유가 있을까요?

cookie-parser만 설치하게 되면 쿠키를 브라우저,프론트서버,벡엔드서버 이 3개의 공간에 서로서로 막힘없이 공유가 잘 이루어지지 않을 수도 있나요??

각 3개의 공간에 서로서로 쿠키를 공유시하고 싶을땐 express-session도 필요한가요??

+ 제가 개인 프로젝트에서 axios 를 쓰면서 쿠키를 공유하는데 백엔드서버,브라우저에 모두 credentials, withCredentials 다 설정해서 백엔드서버랑 브라우저(useEffect안에 서 불러옴)는 쿠키가 공유되는데 프론트서버(getServerSideProps 안에서 불러옴)랑 백엔드서버랑은 쿠키 공유가 잘 안되어 혹여나 하는 마음에 질문 드립니다..

(쿠키는 cookie-parser를 이용해 res.cookie()로 쿠키를 만들어 사용하는 중입니다)

(프론트서버, 백엔드서버 쿠키 공유가 되지않음)

import { GetServerSideProps } from 'next/types';
import wrapper from '@app/store';
import { fetchRefreshData } from '@actions/user';
import axios from 'axios';

export { default } from '@pages/Home';

export const getServerSideProps: GetServerSideProps = wrapper.getServerSideProps((store) => async (context) => {
  const cookie = context.req ? context.req.headers.cookie : '';
  axios.defaults.headers.Cookie = '';
  if (context.req && cookie) {
    axios.defaults.headers.Cookie = cookie;
  }
  await store.dispatch(fetchRefreshData(null));
  return {
    props: {},
  };
});

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

express-session은 쿠키를 기반으로 req.session과 connect.sid 로그인 쿠키를 쓰기 위함입니다. 또한 passport를 사용할 때에도 express session이 필요합니다.

프론트 서버랑 백엔드 서버간에 쿠키 공유가 안 되는 이유는 프론트랑 백엔드 도메인이 달라서 그럴 수 있습니다. 쿠키는 기본적으로 같은 도메인끼리만 공유가 됩니다.

제이제이님의 프로필 이미지
제이제이
질문자

제가 아직 개발중이라 아직 example.com 같은 도메인은 아직 없는데 localhost:3000, localhost:5000 이게 다라.. 그럼 이걸 일치 시켜주라는 뜻일까요?.. 서로 쿠키가 공유되도록 세팅은 다 되었긴했는데..

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

백엔드 서버랑 프론트 서버랑 쿠키 공유가 제대로 안 되고있다는 것은 어떻게 확인하신 건가요?? 어떤 것이.안 되고 있나요?

제이제이님의 프로필 이미지
제이제이

작성한 질문수

질문하기