- 토큰 베이스의 인증 생성
- 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 |