#15.0 Introduction
- DRF에서 authentication strategy를 구축하는 법을 배울 것임
- 토큰 베이스의 인증을 생성해보고, 그 다음 JWT(JSON web token)인증을 만들 것임
- postman 다운받기
#15.1 Custom Authentication
- 우리만의 인증 로직 만들기
- config의 settings 에서 drf 인증의 디폴드 방식을 명시할 것임
REST_FRAMEWORK = {
"DEFAULT_AUTHENTICATION_CLASSES":[
"rest_framework.authentication.SessionAuthentication"
]
}
- config에서 authentication.py라는 새 파일을 생성
from rest_framework.authentication import BaseAuthentication
from rest_framework.exceptions import AuthenticationFailed
from users.models import User
class TrustMeBroAuthentication(BaseAuthentication):
def authenticate(self, request):
username = request.headers.get("Trust-Me")
if not username:
return None
try:
user = User.objects.get(username=username)
return (user, None)
except User.DoesNotExist:
raise AuthenticationFailed(f"No user {username}")
- http://127.0.0.1:8000/api/v1/users/me postman에다가 붙여넣기
- send버튼 누르면?
- 로그인 되지 않았다고 뜸
- 이렇게 입력하고 send하면 body에 이렇게 user에 대해 뜸!
- 근데 이 방식 구리다.
#15.2 Recap
#15.3 Token Authentication
- body-raw-JSON → {"username":"jiyea","password":"123"}입력 → Post → send
- token 발급받을 수 있다(난 왜 안돼?)
- user에게 토큰을 주고, 그 토큰을 디비에 저장, 우리가 토큰인증을 해놔서 가능함
- 이것이 token authentication을 하는 규칙(저거 Post 말고 get으로 해야함)
- 이제 제대로 돌아가면 send를 눌렀을때 내 프로필 정보를 볼 수 있음
#15.4 JWT Encode
- 토큰은 unique함
- pyJWT 라이브러리를 이용해 JSON web token 사용할 것임
- 생성된 토큰을 유저에게 주고 나중에 authentication class를 만들어서 토큰을 복호화 하고 유저를 찾는 방식임
- path("jwt-login",views.JWTLogIn.as_view()), uls.,py에 추가
#15.5 JWT Decode
- 토큰을 받기 위한 authentication class를 작성할 것임
- 인증 방법 세가지 배움
- DRF에서 기본으로 제공하는 인증
- 쿠키와 비밀번호를 이용하는 세션 인증
- 멋진 function(Ex.login,logout)
- 나만의 인증
- Trustmebroauthentication
- JWT
#15.6 Environment Files
- .env 파일을 어떻게 읽는지 배워볼 것임
- settings의 SECRETkey를 숨기기 위함
- 설치해준다
- poetry add django-environ
- simpleJWT? 쉽고 좋다. JWT 쓸거면 사용해도 ㄱㅊ
'Backend > Django' 카테고리의 다른 글
[백엔드][장고][Django] Chapter #4 (1) | 2023.12.30 |
---|---|
[백엔드][장고][Django] Chapter #12 (0) | 2023.07.24 |
[백엔드][Django][장고 채널스]Section3.영어 상황극 채팅 웹 서비스, 사전작업 (0) | 2023.07.24 |
[백엔드][Django][장고 채널스]Section2.영어 상황극 채팅 CLI 애플리케이션 만들기 (0) | 2023.07.24 |
[백엔드][Django][장고 채널스] Section1. openAI API 살펴보기 (1) (0) | 2023.07.24 |
Uploaded by Notion2Tistory v1.1.0