자바올인
252
2021-01-13 21:40:03
5
184

리액트는 세션저장은 어떻게하나요?


로그인시 세션저장을 할려고하는데 리액트는 세션저장은 어떻게 해야되나요ㅜ 검색해봐도 안나오네요..

1
  • 답변 5

  • 한국은역시자바
    485
    2021-01-13 21:41:08

    Javascript 기반 라이브러리이니 sessionStorage 쓰시면됩니다.

  • 초보자1212
    1k
    2021-01-13 23:09:25

    sessionStorage 가 이름이 session 이 들어간다고해서 session 과 연관이 있는건 아닙니다

    세션 저장은 일단 서버에서 세션처리를 어떻게 하냐에따라서 맞춰서 가셔야죠

  • 방황하는젊은이
    996
    2021-01-13 23:37:50

    기본적으로 session 은 cookie 에 의존합니다. react에서 왜 세션을 저장하죠??

  • Ananya
    632
    2021-01-13 23:56:06

    로그인하고 나서의 세션의 생성과 관리는 원칙적으로는 서버에서 하는 겁니다. 다만 클라이언트에서는 창이 열려 있는 동안에 세션 아이디를 갖고 있다가 실어보냄으로써 세션 아이디가 서버에 있는 세션 아이디와 같은지, 만료되지 않았는지 체크하기 위해 들고 있는 용도로 보시면 됩니다. 

    로그인 요청 -> 서버에서 세션 생성 및 수명 설정 -> session 를 회신 -> 브라우저에서 session id를 회신 받아서 cookie/sessionStorage에 저장 -> 이후의 요청을 보낼때마다 헤더에 session id 를 실어서 전송 -> 서버에서 요청을 받을 때 session id 가 유효한지 체크하여 정상 응답을 줄 지, 403 에러를 낼 지 판단함.

    이런 메커니즘이라고 보시면 됩니다. 즉 프론트엔드 쪽에선 브라우저 저장소에 아이디만 저장하면 됩니다.

    쿠키는 시간으로 수명을 설정할 수 있고 창을 닫아도 시간이 안 지나면 유지가 되는 대신 용량 제한이 있고 서버 요청시마다 값을 보내줍니다. sessionStorage는 창을 닫으면 같이 삭제됩니다. 보안적인 이슈 때문에 저는 sessionStorage.setItem() 사용을 가장 추천드립니다. localStorage 라는 것도 브라우저에 있지만, 일부러 지워주지 않는 이상 계속 남아있게 되니 세션아이디 저장용으론 추천하지 않습니다.

  • 피자7
    290
    2021-01-14 00:21:45

    윗사람 말대로 세션정보는 서버에서 저장하는거고 그걸 클라에서 저장한다면 큰일납니다

    굳이 클라이언트 쪽에 저장하고 싶다면 세션말고 JWT 한번 검색해보세요

  • 로그인을 하시면 답변 을 등록할 수 있습니다.