🔐 인증과 권한
인증(Authentication)과 권한(Authorization) 부여를 함께 제공(처리)하며, 이 기능을 인증 시스템이라고 함
인증
권한
- 권한 부여
- 인증된 사용자가 수행할 수 있는 작업 결정
🔐 Custom User Model
인증을 하려면 유저가 필요, 유저가 있으려면 유저 모델이 필요
- 장고가 주는 유저모델을 커스텀 모델로 대체해서 사용하자!
- 현재 프로젝트에서 사용할 User Model을 결정하여 AUTH_USER_MODEL을 정의함
- 기본 유저 모델과 동일하게 작동 하면서도 필요한 경우 나중에 맞춤 설정할 수 있기 때문
프로젝트 중간에 AUTH_USER_MODEL 변경하기
일반적 서비스에서 유저와 관련있는 기능이 많다
- 모델관계에 영향 미쳐 더 어려운 작업이 필요
- 중간 변경 권장하지 않음(프로젝트 처음에 진행!)
데이터베이스 초기화
- 데이터베이스 초기화 후 마이그레이션 (프로젝트 중간일 경우)
- 마이그레이션 파일 삭제
- db.sqlite3 삭제
- 마이그레이션 진행
🔐 HTTP
웹에서 이루어지는 데이터 교환의 기초 (통신규약)
-
특징
- 비연결지향
- 서버는 요청에 대한 응답을 보낸 후 연결을 끊음
- 페이지 보고 있다고 하더라도 연결되어 있는게 아니라 응답하고 연결 끊어진 것
- 무상태
- 연결 끊는 순간 클라이언트와 서버 간 통신이 끝나며 상태 정보가 유지되지 않음
- 클라와 서버가 주고받는 메시지는 독립적
-
어떻게 로그인 상태 유지
🔐 쿠키와 세션
쿠키
상태가 있는 세션을 만들도록 해 줌
서버가 사용자 웹 브라우저에 전송하는 정말 작은 데이터의 조각
- 방문할 때 웹사이트 서버 통해 설치되는 작은 기록 정보 파일
- 쿠키는 두 요청이 동일한 브라우저에서 들어왓는지 아닌지를 판단할 때 주로 사용됨
- 웹 페이지 접속하면 응답한 서버로부터 쿠키 받아 브라우저에 저장 > 같은 서버에 재요청 시마다 요청과 함께 저장해두었던 쿠키도 함께 전송
쿠키 사용 목적
- 세션 관리
로그인, 아이디 자동완성, 공지 하루 안보기, 팝업 체크, 장바구니 등
- 개인화
사용자 선호, 테마
- 트래킹
사용자 행동 분석
세션
사이트와 특정 브라우저 사이의 상태를 유지시키는 것
로그인 정보가 옴 > 서버는 세션 테이블 생성 > 밸류에 민감한 정보 담아도 된다 단, 쿠키에 이 데이터를 보내면 위험하니까 세션 아이디값을 담아서 보낸다 > 서버가 쿠키 열어서 세션 아이디 값을 꺼낸다 > 내 세션 테이블과 비교 (있는지 없는지) > 정상적으로 로그인했던 사람이면 유저에 대한 응답 전송
위처럼 쿠키와 세션을 같이 사용
요청을 하면 기본적으로 쿠키 생성 > 로그인 하면 세션테이블에 값을 바꾸면 된다
쿠키 라이프타임 (수명)
- 세션 쿠키
- 현재 세션 종료되면 삭제
- 브라우저 종료와 함께 세션이 삭제됨
- Persistent 쿠키
- expires 속성에 지정된 날짜 혹은 Max-Age 속성에 지정된 기간이 지나면 삭제
빌트인 로그인 폼
로그인은 세션을 만드는 방법