Token기반 로그인 Session기반 로그인 차이점
백엔드 개발자의 기본 소양
1. 인증 (회원가입,로그인,로그아웃,회원 관리,회원 탈퇴)
2. DB관리 (ERD 쿼리셋,테이블 연결등)
3. Request에 따른 Request처리 (API개발)
4. 배포
Django_session테이블 Session_key
모든 유저의 정보와 Session정보를 "서버"에서 관리
사용자는 Session정보를 쿠키에 저장하게 된다.
토큰 정보를 서버 및 DB에 저장하지 않는다(자원 절약)
서버는 (SECRET KEY로 암호화된) 토큰을 전달하고
사용자는 토큰으로 인증을 한다
대표적인 방식(JWT : JSON WEB TOKEN)
SIMPLE JWT : JWT인증을 위한 라이브러리
헤더.페이로드.서명
헤더,페이로드 는 암호화된 정보가 아니다
페이로드를 조작함으로써 더 많은 데이터를 주고 받는다.
Acces : 인증 키
Refersh : acces 재발급
Toekn 인증 단점
데이터베이스를 이용한 사용자 정보 조작이 어렵다
토큰이 커질 수 있음(페이로드 정보 추가)
토큰이 거의 모든요청에 대해 전송될 경우 트래픽에 악영향
서버는 이 두종류의 토큰을 동시 발급
클라이언트는 로컬 스토리지에 token을 저장
Access : 요청 및 인증을 위한 토큰
Refresh : 토큰 만료시 재발급을 위한 토큰
만료 시간을 임의로 설정이 가능
세션은 db에 인증 정보를 저장한다.
세션, 토큰 인증방식은 사용자의 브라우저에 인증 정보를 저장한다
토큰은 헤더 페이로드 서명으로 구성되어 있다.
공식문서를 자주 읽자
https://docs.djangoproject.com/ko/4.2/
https://www.django-rest-framework.org/
https://django-rest-framework-simplejwt.readthedocs.io/