웹사이트에 최적화된 로그인 기능을 구현하기 위해서, 토큰들을 어떻게, 어디에 저장할 것인지, access token 과 refresh token을 어떻게 관리할지를 결정할때, 웹스토리지와 쿠키에 대한 이해가 필요하다.
1) 세션 스토리지(Session Storage): 임시 저장소
: 브라우저가 열려있는 한 페이지를 Reload 하더라도 유지되며, 브라우저를 닫으면 삭제된다
: 브라우저 단위 --> 브라우저가 다르면 서로 다른 세션
2) 로컬 스토리지(Local Storage): 영구 저장소
: 브라우저를 닫았다가 열어도 유지됨
-> 자동 로그인 구현 시, 쿠키를 세션이 아닌 로컬 스토리지에 저장하는 이유.
HTML5가 탄생하면서, 기존에 사용하던 Cookie 저장소의 단점(로그인 구현에서는 단점이 장점으로 작용하기도...)들을 극복할 수 있게 되었다.
-> Web Storage는 데이터를 클라이언트에서 관리하고, 서버에서는 확인할 수 없음(로그인 기능에서 토큰 등은, 로컬 스토리지에서 꺼내서 헤더에 넣어서 전송)
쿠키는 4KB의 데이터 용량 제한이 있음, 단순 문자열만 저장가능
: Web Storage는 단순 문자열과 구조화된 객체를 저장할 수 있다(개발자 모드에서 객체형식으로 저장된 데이터를 확인할 수 있다)
: 쿠키는 클라이언트에 최대 300개(도메인당 최대 20)의 쿠키를 저장할 수 있음
: Web Storage는 용량의 제한이 없음
쿠키는 일정 시간이 지나면 만료된다(로그인 토큰 값 저장 시, 만료일자 지정 가능)
: 만료일자를 지정하지 않으면 '세션 쿠키'로 생성
(세션 쿠키(Session Cookie)란? 웹 브라우저가 살아있는 동안의 생명주기를 갖으며, 일반적으로 웹브라우저를 닫으면 삭제됨)
(<-> 영구 쿠키(Persistant Cookie): 쿠키의 만료일자 설정을 먼 미래로 한다면, 수동으로 삭제하지 않으면 영구적 저장이 가능)
: Web Storage(Local Storage)는 영구적으로 데이터를 저장할 수 있음
- 쿠키/세션과 캐시의 차이점은?
: 캐시는 이미지, css, js 파일 등을 브라우저나 서버 앞 단에 저장
: 캐시 저장은 브라우저에 저장되는 것이기 때문에, 서버에서 변경이 발생하더라도 적용이 안됨