next js에서 lib 안쓰고 cookie secure HttpOnly 쿠키 심기

YOUNGJOO-YOON·2021년 11월 24일
1

JavaScript

목록 보기
25/25

원래는 iron-session을 사용해서 암호화된 cookie를 심었지만

amplify에서 원활하게 사용하는건 불가능하다고 판단되었다.

nextjs의 ssr은 context를 기본 인자로 받는데
context의 내부에는

... 엄청 많은 정보
   [Symbol(RequestTimeout)]: undefined
    },
    _consuming: false,
    _dumped: false,
    cookies: [Getter/Setter],
    [Symbol(kCapture)]: false,
    [Symbol(kHeaders)]: {
      host: 'localhost:3000',
      connection: 'keep-alive',
      pragma: 'no-cache',
        ...

가 들어있다. 이를 이용하여 cookies를 저장할 수 있는데
node.js에서 처럼

res.writeHead(200,{
'Set-Cookie':['your_cookie_key=your_cookie_value']
})

이런 느낌으로 하면 될 줄 알았지만 안되었다.

    context.res.setHeader('Set-Cookie', `token = token!~~~~~~~~~~`);

이런 느낌으로 저장하도록 하자.

기회가 된다면 암호화와 복호화를 하여 cookie를 저장할 수 있다.

추가로 요즘 쿠키를 저장한다고 하면 필수 요소인 Secure와 HttpOnly, SameSite도 추가해보자

    context.res.setHeader(
      'Set-Cookie',
      `token = yourToken; Expires=Wed; Secure; HttpOnly; SameSite=Strict`
    );


자알 저장이 된다.

따지고 보면 라이브러리는 이를 편하게 해줄 수 있지만 꼭 쓰지 않더라도 이렇게 해결하는 방법을 알아보자..

글에 도움이 된 출처

[https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies] MDN

[https://seob.dev/posts/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80-%EC%BF%A0%ED%82%A4%EC%99%80-SameSite-%EC%86%8D%EC%84%B1/] seob.dev

profile
이 블로그의 글은 제 생각을 정리한 글과 인터넷 어딘가에서 배운 것을 정리한 글입니다. 출처는 되도록 남기도록 하겠습니다. 수정 및 건의 오류 등이 있으면 언제든지 댓글 부탁드립니다.

0개의 댓글