web/django 15

Django Access Token 재발급 API

토큰에는 두 종류- access token (유효기간 짧은, 인가용 token)- refresh token (유효기간 긴, access token 재발급용 token) 토큰 재발급 과정로그인 인증에 성공한 클라이언트는 Refresh Token과 Access Token 두 개를 서버로부터 받는다.클라이언트는 Refresh Token과 Access Token을 로컬에 저장해놓는다.클라이언트는 헤더에 Access Token을 넣고 API 통신을 한다. (Authorization)일정 기간이 지나 Access Token의 유효기간이 만료되었다.Access Token은 이제 유효하지 않으므로 권한이 없는 사용자가 된다.클라이언트로부터 유효기간이 지난 Access Token을 받은 서버는 401 (Unauthori..

web/django 2024.05.20

Django JWT 토큰 기반의 인증 방식 환경 세팅하기

로직 흐름회원가입 - 클라이언트는 회원가입에 필요한 정보를 request body에 담아서 보낸다. - 서버는 이를 받아서 DB에 저장하고, 해당 유저를 인증할 때 사용될 토큰(access, refresh)을 생성한 다음 이를 쿠키에 담아 보낸다. (보통 회원가입 하면 로그인까지 한 번에 되므로)- 클라이언트는 받은 토큰을 브라우저에 저장해 둔다. 회원가입이 완료된 유저의 로그인 - 클라이언트는 로그인에 필요한 정보를 body에 담아서 보낸다. - 서버는 이 정보를 바탕으로 DB에 접근하여 등록된 User가 있는지 확인하고, 있을 경우 유저 인증에 사용될 토큰(access, refresh)을 생성한 다음 쿠키에 담아 보낸다. - 클라이언트는 토큰을 브라우저에 저장해 둔다. 권한이 필요한 기타 작업들 - ..

web/django 2024.05.20

Django Cookie, Session, 그리고 JWT

Authentication(인증)- 사용자를 식별하는 프로세스 (누구인지 확인)- 회원가입 과정, 로그인 과정Authorization(인가)- 인증된 사용자에게 특정 리소스나 기능에 접근할 수 있는 권한이 있는지 확인하는 프로세스- 누구인지 확인이 완료된 사용자에게 '특정 작업 수행 권한'이 있는지 확인- 권한이 필요한 요청 (게시글 수정, 게시글 삭제) http 통신은 Connectionless (비연결성) + Stateless (무상태성) 을 가진다어딘가에 유저 상태 정보를 저장할 필요가 있음 => Cookie, Session, Token Cookie- 사용자가 웹사이트를 방문하고 이용할 때 사용자의 브라우저에 저장되는 작은 정보 조각- 공지 메세지 하루 안보기, 장바구니 담기 기능- 사용자의 PC에..

web/django 2024.05.20

Django serializer 활용하기 - advanced

[Reminder] What is serializer?Django의 Serializer는 Django에서 모델 인스턴스나 쿼리셋을 다양한 데이터 형식으로 변환하는 데 사용됩니다. 이를 통해 Django 애플리케이션에서 데이터를 직렬화하고 역직렬화하며 클라이언트와 서버 간의 데이터 교환에 사용됩니다. One-To-One , One-To-Many , Many-To-Many 관계가 형성된 상태에서의 serializer 작성은 더 신경써야 할 부분이 있다 User - UserProfile 모델 간 OneToOne 관계 (필드 추가해 확장한 Wrapper 클래스 느낌이다)from rest_framework import ModelSerializerfrom django.contrib.auth.models import..

web/django 2024.05.14

Django 모델 생성하고 Many-To-Many 관계 형성하기

User 모델과 Post 모델이 존재한다고 할 때, 좋아요 기능을 구현해보자- 하나의 Post에 여러 User가 '좋아요'를 누를 수 있음- 한 User는 여러 개의 Post에 '좋아요'를 누를 수 있음 => 즉 User 모델과 Post 모델은 Many-to-Many로 연결되어있으며 Like가 그 중계테이블이다. Django에서 ManyToMany 관계를 만드는 세 가지 방법 1️⃣ 중계 테이블을 직접 만들고, 해당 테이블이 Foreign Key로 두 개의 모델을 가리키는 방법2️⃣ 연결해야하는 모델 중 하나에 ManyToManyField를 사용하여 Django가 자동으로 중계 테이블을 만들도록 하는 방법3️⃣  1+2 방법, 중계 테이블을 만들고 ManyToManyField에 직접 만든 중계 테이블을 ..

web/django 2024.05.14

Django 모델 생성하고 One-To-Many 관계 형성하기

Post 모델을 이미 생성한 상태라고 가정. django-admin startapp account새로운 app을 만들고요 INSTALLED_APPS = [ ... 'account', # 추가("account.apps.AccountConfig"도 가능)]프로젝트 serttings.py도 수정을 해야겠죠 사실 장고에서는 기본적으로 User 모델을 제공하지만 이 모델은 최소한의 기본적인 기능만을 제공따라서 기본 field 이외의 커스터마이징이 필요한 경우 이를 확장해서 사용from django.db import modelsfrom django.contrib.auth.models import User# Create your models here.class UserProfile(model..

web/django 2024.05.13

데이터베이스 핵심 개념들

기본키- 테이블에서 행의 식별자로 이용되는 열을 (key)또는 기본 키(primary key)라고 합니다- 테이블에서 한 행을 고유하게 식별할 수 있는 정보를 의미 외래키- onetomany, manytomany 등의 관계에서 다른 테이블을 가리키기 위해 가지고 있는 다른 테이블의 Primary key- foreign key는 하나의 테이블에서 고유하게 존재하는 개념이 아니라, 두 테이블의 관계에서 비롯된 개념 OneToOne테이블의 한 행과 다른 테이블의 한 행이 1:1로 대응되는 관계입니다.일반적으로는 아래와 같은 상황에 사용될 수 있습니다.한 테이블에 데이터를 몰아넣는 게 효율적이지 않을 때보안을 위해 일부 데이터를 따로 관리하고자 할 때onetoone 관계에서 두 테이블을 연결하기 위해서는 반드시..

web/django 2024.05.13

Django SWAGGER 이용해 API 명세 작성하기

pip install -U drf-yasg # 전역으로 설치pip freeze > requirements.txt # 버전정보 저장 설치하시죠 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'post.apps.PostConfig', # 'post' 라고만 적어도 됨 'drf_yash',] seminar/settings.py 에서 해당 앱을 등록해주고 from django.contrib imp..

web/django 2024.05.08