반응형
2021.12.15 - [Study/Django] - [Django] 장고 유저 기능 구현하기 #5 ( 페이지에서 로그인 로그아웃 구현)
이번 게시글에서는 지금까지 로그인을 할 때, username으로 로그인을 했었지만 요즘 대부분의 로그인이 email로 한다는 것을 보고, email로 로그인을 하는 기능을 구현해보겠습니다.
Email로 로그인기능 구현하기
#settings.py
ACCOUNT_AUTHENTICATION_METHOD = 'email' # 로그인시 username 이 아니라 email을 사용하게 하는 설정
ACCOUNT_EMAIL_REQUIRED = True # 회원가입시 필수 이메일을 필수항목으로 만들기
ACCOUNT_USERNAME_REQUIRED = False # USERNAME 을 필수항목에서 제거
Django의 allauth를 사용한다면 정말 쉽게 단 3줄만으로 email 로그인 기능을 구현할 수 있습니다.]
각 부분이 뜻하는 것은 주석과 같고, 좀 더 세밀하게 알아보겠습니다.
ACCOUNT_AUTHENTICATION_METHOD 는 로그인 인증 방법으로 username, email, username_email을 지정할 수 있습니다. email로 설정할 때는 ACCOUNT_EMAIL_REQUIRED = True 옵션을 같이 설정해야 합니다.
ACCOUNT_AUTHENTICATION_METHOD 는 로그인 인증 방법으로
username, email, username_email을 지정할 수 있습니다.
email로 설정할 때는 ACCOUNT_EMAIL_REQUIRED = True 옵션을 같이 설정해야 합니다.
주요 설정 값
- ACCOUNT_AUTHENTICATION_METHOD: 로그인 인증 방법으로 username, email, username_email을 지정할 수 있다. email로 설정할 때는 ACCOUNT_EMAIL_REQUIRED = True 옵션을 같이 설정해야 한다.
- ACCOUNT_EMAIL_REQUIRED: 회원 가입할 때 이메일 주소 입력 필수 여부이다. 디폴트 값은 False이므로 이메일 주소를 입력하지 않아도 가입된다.
- ACCOUNT_USERNAME_REQUIRED: 회원 가입할 때 username 입력 필수 여부이다. 디폴트 값은 True이므로 반드시 ACCOUNT_AUTHENTICATION_METHOD를 통해 이메일로 로그인으로 설정하더라도 username을 입력해야 가입된다.
- ACCOUNT_EMAIL_VERIFICATION: 이메일 유효성 인증이 필요한지 여부이다. 'mandatory', 'optional', 'none' 값을 지정할 수 있으며 'mandatory'는 회원가입 후 이메일 주소를 인증하지 않으면 회원 가입하더라도 로그인할 수 없다. 'optional'은 인증 이메일은 발송되지만 인증하지 않아도 로그인할 수 있고 'none'은 인증 메일을 보내지도 않고 로그인할 수 있다.
- ACCOUNT_LOGIN_ATTEMPTS_LIMIT: 지정된 횟수(기본값=5) 만큼 로그인 실패할 경우 ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT 설정값으로 지정한 시간(단위=초)만큼 로그인할 수 없다. allauth 로그인 뷰에서 적용되고 Django 기본 관리자 로그인 뷰에는 적용되지 않는다.
- ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT: 로그인 실패 시 다시 로그인할 수 없는 시간(기본값=300초)이다.
- ACCOUNT_USER_MODEL_USERNAME_FIELD: 커스텀 사용자 모델을 사용하는 경우 아이디 필드의 이름이 username이 아닌 다른 이름일 경우 지정한다. 만약 None으로 지정할 경우 allauth에서 username과 관련된 모든 기능을 사용하지 않는다. 이 경우 ACCOUNT_USERNAME_REQUIRED 값 또한 반드시 False로 지정해야 한다.
- ACCOUNT_USER_MODEL_EMAIL_FIELD: 커스텀 사용자 모델을 사용하는 경우 이메일 필드의 이름이 기본값 email이 아닌 다른 이름일 경우 지정한다. 만약 None으로 지정할 경우 allauth에서 email과 관련된 모든 기능을 사용하지 않는다. 이 경우 ACCOUNT_EMAIL_REQUIRED 값 또한 반드시 False로 지정해야 한다.
- ACCOUNT_SIGNUP_FORM_CLASS: 회원가입 폼 클래스를 지정하고 해당 클래스는 def signup(self, request, user) 메소드를 반드시 구현해야 한다.
- SOCIALACCOUNT_AUTO_SIGNUP: 디폴트 값은 True이며 SNS 공급자에서 넘겨받은 정보를 가지고 바로 회원 가입시킨다. 부가정보를 입력받기 위해 False로 설정할 수 있다.
반응형
'Study > Django' 카테고리의 다른 글
[Django] 장고 유저 기능 구현하기 #8 (닉네임 필드 추가하기) (0) | 2021.12.18 |
---|---|
[Django] 장고 유저 기능 구현하기 #7 (로그인 기억하기) (0) | 2021.12.17 |
[Django] 장고 유저 기능 구현하기 #5 ( 페이지에서 로그인 로그아웃 구현) (1) | 2021.12.15 |
[Django] 장고 유저 기능 구현하기 #4 ( 로그인 및 회원가입 후 Redirect 페이지 변경) (0) | 2021.12.15 |
[Django] 장고 유저 기능 구현하기 #3 (all-auth 사용 셋팅) (0) | 2021.12.15 |