본문 바로가기
airbnb clone coding

[Django] 15. AUTHENTICATION

by busybee-busylife 2024. 8. 30.
반응형

- 토큰 베이스의 인증 생성 

- JWT(Jason Web Token) 인증 생성

- 로그인하면 django가 자동으로 쿠키, 세션을 생성

- /api/v1/users/me 로 갔을때, 내 프로필이 보여야 


Custom Authentication

(실제로는 사용하지 X. 커스텀 인증 만드는 것이 쉽다는 것을 보여주기 위해 그냥 한 번 해보는 것) 

user가 제공하는 정보를 그대로 믿고 인증을 해주는 것 

 

1) config > settings.py 에서 Django RestFramework 인증의 default 방식을 명시 

2) config > authentication.py 파일 만들어 TrustMeBroAuthentication 클래스 생성


Token Authentication

- 랜덤 토큰을 생성해서 user에게 전달 & 토큰은 데이터베이스에 저장 

- 토큰 모델이 필요 

 

1) config > settings.py 의 THIRD_PARTY_APPS에서 'rest_framework.authtoken' 추가(admin 패널에 새로운 모델 생김)

2) config > settings.py 의 REST_FRAMEWORK의 'DEFAULT_AUTHENTICATION_CLASSES'에 TokenAuthentication 추가 

3) users > urls.py 의 urlpatterns에 path 추가 


JWT Encode/Decode

JWT: Jason Web Token

- 데이터베이스에 공간을 전혀 차지하지 않는다 

- 대신 암호화된 정보를 담고있는 토큰을 user에게 전달한다

(유저가 username, password를 주면 -> 토큰 생성 -> 유저에 관한 정보를 토큰 안에 넣음 -> 유저는 그 토큰을 가지고 있다가 다시 보내옴 -> 우리는 그 토큰을 열어서 우리가 넣었던 정보를 확인) 

- 이 방법은 유저를 강제 로그아웃시킬 수 없다(위 Token Authentication에서는 어드민 패널에서 해당 토큰을 삭제하면 그 유저는 강제 로그아웃된다) 

 

1) poetry add pyjwt

2) users > urls.py 의 urlpatterns에 새로운 path 추가 

3) users > views.py 에서 JWTLogIn(APIView) 클래스 생성 

4) config > settings.py의 SECRET_KEY를 사용(나중에 나만의 secret key를 만들 예정) 

5) config > authentication.py 에서 JWTAuthentication 클래스 생성 

6) config > settings.py 의 REST_FRAMEWORK에 JWTAuthentication 추가 


 

1) config > settings.py 의 SECRET_KEY를 복사하여 .env에 저장

2) poetry add django-environ

3) config > settings.py 에서 os, environ을 import하고 read_env 경로 추가 

반응형

'airbnb clone coding' 카테고리의 다른 글

[React] 17. FRONT-END SETUP: Router, Not Found Page  (1) 2024.11.02
[Django] 16. API TESTING  (0) 2024.09.01
[Django] 14. GRAPHQL API  (0) 2024.08.28
[Django] 13. Code Challenge  (0) 2024.08.28
[Django] 12. USERS API  (0) 2024.08.28