ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 2023.04.19
    내일배움캠프 2023. 4. 19. 21:04

    장고 심화 강의 중 쿠키 세션 토큰을 이해하기 힘들었다.

    그래서 따로 찾아보고 정리해보자

     

    쿠키, 세션 그리고 토큰

    쿠키는 브라우저에 저장되는 정보다. 우리가 웹페이지를 이용하면서 사용한 정보들이 쿠키로 저장돼서 그 웹페이지를 이용할 때 용이하게 해준다.

     

    HTTP는 무상태(stateless) 프로토콜이기 때문에 로그인 정보를 웹페이지를 이용할 때마다 같이 전송해주지 않으면 우리가 로그인 한 상태인지 알지 못한다. 그렇기에 로그인을 하면 서버에서 세션 아이디라는 데이터를 만들어 메모리에 저장하고 클라이언트에 전송해준다. 그럼 클라이언트는 브라우저에 세션 아이디를 저장해뒀다가 앞으로의 요청에 같이 전송하게 된다. 그럼 서버는 메모리의 세션 아이디와 클라이언트가 전송한 세션 아이디가 유효한지 검증 후 응답해준다.

     

    그러나 이 방식은 클라이언트가 많아지면 서버 메모리에 많은 부하를 준다. 

     

    대안은 토큰을 발급해주는 것이다. 로그인을 하면 서버는 토큰을 발급해주고 클라이언트는 이 토큰을 쿠키에 저장해뒀다가 요청에 같이 전송하게 된다. 서버는 토큰을 받아서 자신이 발급한 토큰이 맞는지 검증 후 응답한다.

     

    DRF에서는 JWT(JSON Web Token)를 사용하여 토큰 인증을 구현할 수 있다. simple-jwt는 JWT를 쉽게 구현할 수 있도록 도와주는 라이브러리다. -https://django-rest-framework-simplejwt.readthedocs.io/en/latest/index.html

     

    Simple JWT — Simple JWT 5.2.2.post16+gf298efa documentation

    Simple JWT provides a JSON Web Token authentication backend for the Django REST Framework. It aims to cover the most common use cases of JWTs by offering a conservative set of default features. It also aims to be easily extensible in case a desired feature

    django-rest-framework-simplejwt.readthedocs.io

     

    토큰 정보 보기 - https://jwt.io/

     

    JWT.IO

    JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

    jwt.io

     

    custom user 만들기 - https://docs.djangoproject.com/en/4.1/topics/auth/customizing/

     

    Django

    The web framework for perfectionists with deadlines.

    docs.djangoproject.com

     

    파이썬 코루틴

    sub + routine: 종속적인 루틴

    Co + routine: 협력적으로 실행되는 루틴

     

    동기 처리: 순차 처리 방식

    비동기 처리: 여러 작업 동시에처리

     

    yield next send

     

    asyncio

    비동기 프로그래밍을 위한 라이브러리: 코루틴 이용

     

    코루틴 함수 정의에 사용되는 async

    코루틴 안에서 다른 코루틴의 실행의 완료를 기다리는 await

    코루틴을 시작하는 run()

     

    어떻게 쓰일지만 생각을 해보세요

    나중에 딥하게 공부한번 해보세요

     

     

    모듈 vs 패키지 vs 라이브러리

    pipenv poetry 의존성 관리를 위한 도구(requirements.txt 대체)

     

    의존성 관리?

     

    모듈?

    파이썬으로 정의된 파일

    실행가능한 파이썬 파일

     

    패키지?

    모듈이 모여서 패키지

    모듈의 집합

    파이썬 코드 내에서 .모듈이름 으로 모듈성 네임스페이스에 접근할 수 있는 공간

    이름 공간

     

    라이브러리?

    쓸만한 모듈 패키지를 만들어 놓은 것

    미리 준비된 모듈 패키지 뭉치

    미리 준비한 것

    파이썬 스탠다드 라이브러리(표준 라이브러리)

    파이썬 패키지 인덱스(Pypi)

    Pip Python Package System

     

    외부 라이브러리 관리 = 의존성 관리

    이떤 버전/어떤 패키지가 쓰였는가

    어떤 버전/어떤 패키지가 쓰일 수 있나

    pip freeze > requirements.txt

    장고를 깔았더니 장고를 구성하고 있는 구성품(의존성 패키지)

    한 패키지가 변화되면 여러 영향을 끼칠 수 있다는 것

    pip install -r requirements.txt

    equirements-dev.txt 개발 테스트용

     

    의존성 관리 w/ pip

    개발용 배포용에 서로 다른 경우

    어떤 팀원들에겐 깔려잇지만 나는 안걸려

    의존관계 파악 어려움

    패키지 트래킹 어려움

    핍 언인스톨은 디펜덴시즈까지 삭제하지는 않는다

    통일되지 않은 가상환경 & 패키지관리자

    쉘은 하나만 써라 터미널은 하나만 열어주세요

     

    이것들을 해결할 도구가 pipenv poetry

    어떤 식으로 사용되는 지 용례만

    pipenv install

    pipenv install —dev (개발용)

    Pipfle.lock 똑같은 패키지 설치되도록 보장(스냅샷 생성)

    cat Pipfile

    pipenv graph 

     

    pipenv: 기존 문제의 해결

    의존성관리 piffle, piffle.lock(->vac)

    패키지 설치, 가상환경, 의존성 관리 한번에!

    의존성 그래프 지원

    패키지 버전별 관리의 편리함

    개발용, 배포용 패키지 나누어 관리 가능

     

    그렇다면 왜 얘를 안쓰고 poetry를 쓰는가

    너무 늦은 릴리즈 주기

    리눅스 맥에서 성능 안습

     

    Poetry

    poetry init 파이프로젝트.톰 생성

    어떤

     

    poetry install 가상환경 생성 Poetry.lock 생성

    poetry shell 가상환경 실행

    poetry add Django  lock파일도 같이 생성

    Add —dev ~ 개발용 패키지로 설치

    써치 기능

    Show 어떤 패키지가 어디에 설치 됐는지

     

    Poetry: 기존 문제의 해결

    의존성 관리: pyproject.toml, poetry.lock

    패키지 설치, 가상환경, 의존성 관리 한번에

    Publish 기능

    패키지 검색 기능

    의존성 그래프 지원

    패키지 버전별 관리의 변리함

    개발용, 배포용 패키지 나누어 관리 가능

    '내일배움캠프' 카테고리의 다른 글

    TIL 2023.04.21  (2) 2023.04.21
    TIL 2023.04.20  (0) 2023.04.20
    TIL 2023.04.18  (0) 2023.04.18
    TIL 2023.04.17  (0) 2023.04.17
    WIL 내일배움캠프 5주차  (0) 2023.04.14
Designed by Tistory.