본문 바로가기

프로그래밍/Django개발(MAC OS)

Django 소셜 로그인 구현 - Naver

반응형

 

Django Social Login은 대부분의 웹사이트에서 필수적이죠!!

Naver소셜로그인에 대해서 알아보도록 하겠습니다.

대부분이 쉽게 Django를 활용해서 소셜로그인 구현이 가능합니다.

 

1. 패키지 모듈 설치

pip install django-allauth

 

2. Settings.py에 설정 하기

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
)

INSTALLED_APPS = (

    'django.contrib.auth',
    'django.contrib.messages',
    'django.contrib.sites',

    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.naver',
)


SITE_ID = 1

AUTH_USER_MODEL = 'accounts.User'

 

3. urls.py에 설정

urlpatterns = [
	path('accounts/', include('allauth.urls')),

]

 

4. 셋팅을 바꾸었으니 migrate를 해줍니다

$ python manage.py migrate

 

아래 주요 설정 값을 활용하시면 더 효율적인 로그인 기능을 활용할 수 있습니다.

주요 설정 값

  • 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로 설정할 수 있다.

    [ wikidocs 참조 ] 
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'none'
SOCIALACCOUNT_AUTO_SIGNUP = False
ACCOUNT_SIGNUP_FORM_CLASS = accounts.forms.SignupForm

 

https://developers.naver.com/appinfo

 

애플리케이션 - NAVER Developers

 

developers.naver.com

이제 위에 들어가셔서 어플리케이션 등록하세요!!

 

 

 

반응형