장고를 이용해 JWT + 2FA, OAuth 로그인을 구현해보자.
AbstractUser와 User는 Django의 사용자 인증 시스템에서 사용되는 모델입니다. 이 둘은 다음과 같은 차이점이 있습니다:
1. User 모델
- 정의: Django에서 기본 제공하는 사용자 모델입니다. django.contrib.auth.models.User로 불립니다.
- 기본 기능: 사용자 인증에 필요한 기본 필드와 메서드를 가지고 있습니다 (예: username, password, email, first_name, last_name 등).
- 사용 사례: 기본 제공 기능만으로 충분한 경우에 사용합니다. 별도의 사용자 필드 확장이 필요하지 않다면 User 모델을 사용할 수 있습니다.
2. AbstractUser 모델
- 정의: Django의 기본 User 모델을 상속받아 커스터마이징할 수 있도록 만든 추상화된 모델입니다. django.contrib.auth.models.AbstractUser로 불립니다.
- 기본 기능: User 모델과 동일한 필드를 가지고 있지만, 상속받아 커스터마이징할 수 있습니다. 새로운 필드를 추가하거나 기본 동작을 변경할 수 있습니다.
- 사용 사례: 사용자 모델에 추가 필드를 추가하거나, 기본 User 모델을 확장하고자 할 때 사용합니다.
주요 차이점
- 확장성: AbstractUser는 직접 커스터마이징할 수 있는 반면, User는 기본적으로 제공되는 대로 사용해야 합니다.
- 필드 추가: AbstractUser를 상속받으면 추가적인 필드를 쉽게 정의할 수 있지만, User를 직접 사용할 때는 모델을 그대로 사용해야 하며, 필드 추가를 위해서는 다른 방법이 필요합니다 (예: OneToOneField를 사용하는 프로필 모델을 별도로 만드는 것).
JWT 기반 로그인
python