[TIL: 0322] Django : 인증과 권한 이해

ryun·2023년 3월 22일
0

TIL

목록 보기
32/34

🔐 인증과 권한

인증(Authentication)과 권한(Authorization) 부여를 함께 제공(처리)하며, 이 기능을 인증 시스템이라고 함

  • 필수 구성은 세팅.py에 이미 포함되어 있다

인증

  • 신원 확인
  • 사용자가 누구인지 확인하는 것

권한

  • 권한 부여
  • 인증된 사용자가 수행할 수 있는 작업 결정

🔐 Custom User Model

인증을 하려면 유저가 필요, 유저가 있으려면 유저 모델이 필요

  • 장고가 주는 유저모델을 커스텀 모델로 대체해서 사용하자!
    • 현재 프로젝트에서 사용할 User Model을 결정하여 AUTH_USER_MODEL을 정의함
    • 기본 유저 모델과 동일하게 작동 하면서도 필요한 경우 나중에 맞춤 설정할 수 있기 때문

프로젝트 중간에 AUTH_USER_MODEL 변경하기

일반적 서비스에서 유저와 관련있는 기능이 많다

  • 모델관계에 영향 미쳐 더 어려운 작업이 필요
  • 중간 변경 권장하지 않음(프로젝트 처음에 진행!)

데이터베이스 초기화

  • 데이터베이스 초기화 후 마이그레이션 (프로젝트 중간일 경우)
  1. 마이그레이션 파일 삭제
  2. db.sqlite3 삭제
  3. 마이그레이션 진행

🔐 HTTP

웹에서 이루어지는 데이터 교환의 기초 (통신규약)

  • 특징

    • 비연결지향
      • 서버는 요청에 대한 응답을 보낸 후 연결을 끊음
      • 페이지 보고 있다고 하더라도 연결되어 있는게 아니라 응답하고 연결 끊어진 것
    • 무상태
      • 연결 끊는 순간 클라이언트와 서버 간 통신이 끝나며 상태 정보가 유지되지 않음
      • 클라와 서버가 주고받는 메시지는 독립적
  • 어떻게 로그인 상태 유지

    • 지속적 상태 유지 위해 쿠키와 세션이 존재

🔐 쿠키와 세션

쿠키

상태가 있는 세션을 만들도록 해 줌
서버가 사용자 웹 브라우저에 전송하는 정말 작은 데이터의 조각

  • 방문할 때 웹사이트 서버 통해 설치되는 작은 기록 정보 파일
  • 쿠키는 두 요청이 동일한 브라우저에서 들어왓는지 아닌지를 판단할 때 주로 사용됨
  • 웹 페이지 접속하면 응답한 서버로부터 쿠키 받아 브라우저에 저장 > 같은 서버에 재요청 시마다 요청과 함께 저장해두었던 쿠키도 함께 전송

쿠키 사용 목적

  1. 세션 관리
    로그인, 아이디 자동완성, 공지 하루 안보기, 팝업 체크, 장바구니 등
  2. 개인화
    사용자 선호, 테마
  3. 트래킹
    사용자 행동 분석

세션

사이트와 특정 브라우저 사이의 상태를 유지시키는 것

로그인 정보가 옴 > 서버는 세션 테이블 생성 > 밸류에 민감한 정보 담아도 된다 단, 쿠키에 이 데이터를 보내면 위험하니까 세션 아이디값을 담아서 보낸다 > 서버가 쿠키 열어서 세션 아이디 값을 꺼낸다 > 내 세션 테이블과 비교 (있는지 없는지) > 정상적으로 로그인했던 사람이면 유저에 대한 응답 전송

위처럼 쿠키와 세션을 같이 사용

요청을 하면 기본적으로 쿠키 생성 > 로그인 하면 세션테이블에 값을 바꾸면 된다

쿠키 라이프타임 (수명)

  • 세션 쿠키
    • 현재 세션 종료되면 삭제
    • 브라우저 종료와 함께 세션이 삭제됨
  • Persistent 쿠키
    • expires 속성에 지정된 날짜 혹은 Max-Age 속성에 지정된 기간이 지나면 삭제

빌트인 로그인 폼

로그인은 세션을 만드는 방법

0개의 댓글