전체 글(144)
-
DRF JWT 인증
전 강의에서 배운 Django의 기본 Token은 랜덤 문자열로 구성되어 있기에 Token을 통해서 어떤 유저인지 알 수 없고, Token 유효기간도 없어서 위험하다. 이러한 기본 Token의 단점을 JWT를 통해서 보완해보자. Token 인증과 JWT 인증 DRF의 기본 Token 단순한 랜덤 문자열 각 User와 1:1 매칭 유효기간이 없습니다. Token을 받았을 때 어떤 유저의 Token인지 알 수 없음 >>> import binascii >>> import os >>> binascii.hexlify(os.urandom(20)).decode() 'ec90f85721dc5f75b6eec47d199e3476c301633f' JWT 데이터베이스를 조회하지 않아도, 로직만으로 인증이 가능 -> JWT 만..
2022.07.15 -
DRF Token인증 적용하기
DRF에서 지원하는 인증 rest_framework.authentication.SessionAuthentication 웹 프론트엔드와 장고가 같은 호스트를 쓴다면, 세션 인증을 사용할 수 있습니다.(nginx 등 활용) 외부 서비스 / 앱에서 세션 인증을 사용할 수 없다. // 안드로이드나 React등에서 사용할 수 없다. rest_framework.authentication.BasicAuthentication 외부 서비스/앱에서 매번 username/password를 넘기는 것은 보안상 위험하고, 하면 안된다. rest_framework.authentication.TokenAuthentication 초기에 username/password로 Token을 발급받고, 이 Token을 매번 API요청에 담아서..
2022.07.15 -
멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon 워크 스페이스 회고
멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon Chapter 2주차 14일 회고 부족하지만 멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon에 합격하게되어서 MOD를 먼저 사용해볼 수 있는 감사한 기회를 얻게 되었습니다...! 최선을 다해 공부하고, 리뷰하겠습니다! 부족한 글 보러 와주셔서 감사드립니다! Chapter 1~4 회고록 https://devdongbaek.tistory.com/132 멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon Chapter 1~4 회고 멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon Chapter 1주차 11일 회고 부족하지만 멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon에 합격하..
2022.07.15 -
DRF Pagination
DRF에서 기본 지원하는 페이징 방식 PageNumberPagination page/page_size 인자를 통한 페이징 처리 LimitOffsetPagination offset/limit 인자를 통한 페이징 처리 PageNumberPagination page_size 미지정 상황을 위해, 디폴트 지정이 필요 settings.py 내 REST_FRAMEWORK = {"PAGE_SIZE": 10} 를 통해 전역 설정 PageNumberPagination을 상속받아 page_size 설정 from rest_framework.paginationimport PageNumberPagination class MyPageNumberPagination(PageNumberPagination): page_size = 10..
2022.07.14 -
DRF Authentication과 Permission
인증 유입되는 요청을 허용 / 거부하는 것을 결정하는 것이 아니라, 단순히 인증 정보로 유저를 식별하는 것입니다. Authentication : 유저 식별(ex: 업주인지 고객 유저인지) Permissions : 유저의 리소스에 대한 각 요청에 대한 허용/거부(ex: 특정 유저만 글 쓰기) Throttling : 특정 유저가 일정 시간 동안에 허용할 최대 요청 횟수(ex: 글 쓰기 제한) 인증 프로세스 유저 식별 해당 유저가 리소스에 대한 어떤 액션을 취할 때 허용할 것인지, 거부할 것인지 허용된다면, 특정 리소스에 대한 요청 횟수를 넘어서지 않는지 인증 처리 순서 매 요청 시마다 APIView의 dispatch(request) 호출 APIView의 initial(request) 호출 APIView의 p..
2022.07.14 -
DRF Serializer를 통한 유효성 검사 및 저장
Serializer의 생성자 Serializer는 Django Form과 컨셉 / 사용법이 유사하나, 생성자 차이 # django/forms/forms.py class BaseModelForm: def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=ErrorList, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None): class Form(BaseForm): pass Form에서는 인자로 data와 files, instance를 받는다. # rest_framework/serialize..
2022.07.14