<오늘 새롭게 배운 것>
- 토큰 방식 로그인 vs 세션 방식 로그인
- 세션방식은 모든 유저의 정보와 세션 정보를 서버에서 관리함
- 클라이언트에서 사용자의 인증 정보를 서버에 전달함(로그인 할 때 아이디, 비밀번호를 입력하면 그 값이 서버로 전달된다는 말)
- 서버는 인증을 처리한 뒤 해당 사용자에 대해 세션을 생성함
- 세션 정보는 서버에 저장되고 클라이언트는 세션 id를 받아 브라우저(쿠키)에 저장
- 클라이언트는 이후 요청에 대해 세션 id를 서버에 넘김
- 서버는 전달 받은 세션 id를 매치되는 저장 중인 세션 정보로 인증을 처리함
- 만약 세션 id가 만료되었을 경우 1번 과정부터 다시 이루어짐
- 토큰방식은 토큰 정보를 서버에 저장하지 않음. 대표적인 방식으로 JWT(JSON Web Token)가 있음
- 클라이언트에서 사용자의 인증 정보를 서버에 전달(세션 방식과 동일)
- 서버는 인증 정보로 인증을 처리하고 (세션 대신) JWT를 생성하여 클라이언트에 전달
- 클라이언트는 JWT를 브라우저(localStorage)에 저장
- 클라이언트는 이후 이루어지는 요청에 JWT를 이용
- 서버는 JWT를 검증하여 인증을 처리
- JWT가 만료되면 토큰을 refresh 함
- 세션방식의 단점은 매번 인증을 위해 데이터베이스에 질의를 거쳐야 한다는 것
- 슈퍼에서 주류를 구매할 때 상황으로 비유를 하자면 세션 방식은 주류 구매자(클라이언트)가 주민등록번호(사용자의 인증 정보)를 말하면 주류 판매자(서버)는 주민센터(데이터베이스)에 전화해서 이 사람의 주민번호가 이게 맞는지 확인하는 방식이고, 토큰 방식은 주류 구매자(클라이언트)가 술을 사려고 할 때(로그인, 회원가입 등을 하려고 할 때) 주류 판매자(서버)에게 주민등록증(토큰)을 제시하면 바로 구매할 수 있는 방식이라고 생각하면 됨
- 로컬스토리지 vs 쿠키
- 쿠키는 매번 모든 요청에 실려서 보내짐. 회원정보 같은 매번 보내줘야 하는 것은 쿠키에 쓰는 것이 유리함.
- 쿠키의 최대 크기 4,096 bytes, 로컬스토리지는 5MB. 많은 양을 저장할 때는 로컬 스토리지가 유리함.
- 쿠키는 만료가 있지만, 로컬스토리지는 만료가 없음.
- 쿠키를 설정하는 건 약간 어려움. 로컬스토리지가 사용하기에 훨씬 편리함.
- JWT를 어디에 저장해야 할지는 의견이 분분함
<느낀 점>
- 오늘도 알고리즘 문제를 풀지 못했다........
- 하
- ............
- 주말에...........보충공부 필수.........
- 심화강의도 다 못 들었다...............
- 일요일 내내 보충하겠어......다음주 개인과제를 위해