Jin's.log
로그인
Jin's.log
로그인
[Django]Cookie & Session
Jin
·
2021년 9월 17일
팔로우
0
django
0
django
목록 보기
10/14
HTTP 특징
비연결지향 (connectionless)
- 서버는 요청에 대한 응답을 보낸 후 연결을 끊음
무상태
연결을 끊는 순간 클라이언트와 서버 간의 통신이 끝나며 상태 정보가 유지 되지 않음
클라이언트와 서버가 주고 받는 메시지들은 서로 완전히 독립적
클라이언트와 서버의 지속적인 관계를 유지하기 위해 쿠키와 세션이 존재
Cookie 개념
서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조작
사용자가 웹사이트를 방문할 경우 해당 웹사이트의 서버를 통해 사용자의 컴퓨터에 설치 되는 작은 기록 정보 파일
브라우저(클라이언트)는 쿠키를 로컬에 KEY-VALUE의 데이터 형식으로 저장
이렇게 쿠키를 저장해놨다가, 동일한 서버에 재요청 시 저장된 쿠기를 함께 전송
소프트웨어가 아니라 프로그램처럼 실행 될 수 없으며 악성코드를 설치 할 수는 없지만, 사용자의 행동을 추적하거나 쿠키를 훔쳐 해당 사용자의 계정 접근권한을 획득 할 수도 있음.
HTTP 쿠키는 상태가 있는 세션을 만들어 줌
쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할때 주로 사용
이를 이용해 사용자의 로그인 상태를 유지 할 수 있음
상태가 없는 HTTP 프로토콜에서 상태 정보를 기억 시켜주기 때문
웹 페이지에 접속하면 요청한 웹 페이지를 받으며 쿠키를 저장, 클라이언트가 같은 서버에 재요청시 요청과 함께 쿠키도 전송
Cookie의 사용 목적
세션 관리
로그인, 아이디 자동 완성, 공지 하루 안보기, 팝업 체크 등 정보 관리
개인화 : 사용자 선호, 테마 등의 설정
트래킹 : 사용자 행동을 기록 및 분석
Cookie lifetime
Session cookies
현재 세션이 종료되면 삭제
브라우저가 '현재 세션'이 종료되는 시기를 정의
일부 브라우저는 다시 시작할 때 세션복원(session restoring)을 사용해 세션 쿠키가 오래 지속 될 수 있도록 함
Persistent cookies(= Permanent cookies)
Expires 속성에 지정된 날짜 혹은 Max-Age 속성에 지정된 기간이 지나면 삭제
Session
사이트와 특정 브라우저 사이의 상태를 유지시키는 것
클라이언트가 서버에 접속하면 서버가 특정 session id를 발급하고, 클라이언트는 발급 받은 session id를 쿠키에 저장
클라이언트가 다시 서버에 접속하면 요청과 함께 쿠키(session id가 저장된)를 서버에 전달
쿠키는 요청 때마다 서버에 함께 전송되므로 서버에서 session id를 확인해 알맞은 로직을 처리
ID는 세션을 구별하기 위해 필요하며, 쿠키에는 ID만 저장함
Session in Django
Django의 세션은 미들웨어를 통해 구현됨
Django는 database-backend sessions 저장 방식을 기본 값으로 사용
설정을 통해 cached, file-based, cookie-based 방식으로 변경 가능
Django는 특정 session id 를 포함하는 쿠키를 사용해서 각각의 브라우저와 사이트가 연결된 세션을 알아냄
세션 정보는 Django DB의 django_session 테이블에 저장됨.
모든 것을 세션으로 사용하려고 하면 사용자가 많을 때 서버에 부하가 걸릴 수 있음
SessionsMiddleware : 요청 전반에 걸쳐 세션을 관리
AuthenticationMiddleware : 세션을 사용하여 사용자를 요청과 연결
MIDDLEWARE
http요청과 응답 처리 중간에서 작동하는 시스템(hooks)
django는 http 요청이 들어오면 미들웨어를 거쳐 해당 URL에 등록 되있는 view로 연결, http 응답 역시 미들웨어를 거쳐 내보냄
주로 데이터관리, 어플리케이션 서비스, 메시징, 인증 및 API 관리 담당
Jin
내가 다시 볼려고 작성하는 블로그. 아직 열심히 공부중입니다 잘못된 내용이 있으면 댓글로 지적 부탁드립니다.
팔로우
이전 포스트
[Django] Static files
다음 포스트
[Django] Login
0개의 댓글
댓글 작성