Simple-jwt로 회원가입 기능을 직접 구현할 수 있지만
필자는 빠르고 신속하게 구현하기 위해 dj-rest-auth를 사용하여 구현했다.
간단한 커스텀은 이후 포스팅에 기록할 예정!
또한 장고 설치 및 구성은 패스하고 dj-rest-auth 관한 내용만 정리하겠다.
setting.py 추가
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# my-app
'api',
# third party
'rest_framework',
# auth
'rest_framework.authtoken',
'dj_rest_auth',
# login
'django.contrib.sites',
'allauth',
'allauth.account',
'dj_rest_auth.registration',
]
# dj-rest-auth
REST_USE_JWT = True
JWT_AUTH_COOKIE = 'api-auth'
JWT_AUTH_REFRESH_COOKIE = 'api-refresh-token'
# django-allauth
SITE_ID = 1
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = True
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "none"
# ACCOUNT_AUTHENTICATION_METHOD = 'email'
# ACCOUNT_EMAIL_VERIFICATION = 'none'
설치한 라이브러리를 사용할 수 있도록 추가 (배포 시 requirement.txt 추가 필수)
dj-rest-auth 관련
- REST_USE_JWT = True : 필수
- JWT_AUTH_COOKIE ='your app cookie name' : 필수 / 설정 값없을 시 logout 제대로 작동 안 함
- JWT_AUTH_REFRESH_COOKIE = refresh token 사용 시 설정
django-allauth 관련
※ dj-rest-auth가 django-allauth 기반으로 구현됨
- SITE_ID: 해당 도메인의 id
- ACCOUNT_UNIQUE_EMAIL: User email unique 사용 여부
- ACCOUNT_USER_MODEL_USERNAME_FIELD: User username type
- ACCOUNT_USERNAME_REQUIRED: User username 필수 여부
- ACCOUNT_EMAIL_REQUIRED: User email 필수 여부 / uniquekey로 생성
- ACCOUNT_AUTHENTICATION_METHOD: 로그인 인증 수단
- ACCOUNT_EMAIL_VERIFICATION: Email 인증 필수 여부 / 필자는 none으로 설정
더 많은 변수가 있으니 찾아보는 것을 추천! - 필자는 여기까지...
api/urls.py
urlpatterns = [
path('auth/', include('dj_rest_auth.urls')),
path('auth/registration/', include('dj_rest_auth.registration.urls'))
]
* 필자는 account를 따로 만들지 않고 api 내부에 auth를 생성
따로 만들고 싶다면 최상단의 urls에 위와 같이 연결 필요
위와 같이 설정해 주면 다음과 같은 url을 사용할 수 있음
- http://localhost:8000/api/auth/password/reset/
- http://localhost:8000/api/auth/password/reset/confirm/
- http://localhost:8000/api/auth/login/
- http://localhost:8000/api/auth/logout/
- http://localhost:8000/api/auth/user/
- http://localhost:8000/api/auth/password/change/
- http://localhost:8000/api/auth/token/verify/
- http://localhost:8000/api/auth/token/refresh/
- http://localhost:8000/api/auth/registration/
공식 문서 :
https://dj-rest-auth.readthedocs.io/en/latest/installation.html#json-web-token-jwt-support-optional
출처 및 참고:
https://minwoo.kim/posts/create-register-and-jwt-login-api-using-django-rest-framework/
'👩💻 개발 > ⚙️ BACKEND' 카테고리의 다른 글
[Django] dj-rest-auth Custom (0) | 2022.12.22 |
---|---|
[Django] DRF Method Override 방법 (1) | 2022.10.08 |
[Django] ViewSet , Router (4) | 2022.10.08 |
[Django] admin 계정 생성 (0) | 2022.10.08 |
[Django] related_name 설정 (0) | 2022.10.07 |