[Django] 소셜로그인(Social login) 구현하기

🌟Django social login

🎯Social login

소셜로그인이란 네이버, 구글에서 기존에 사용하던 회원정보를 통해 회원가입 및 로그인 할 수 있는 기능입니다.

🎯Django-allauth란?

Django-allauth는 소셜 인증 정보를 처리하는 장고의 응용 프로그램입니다. 두 웹사이에서 공유해야하는 정보를 관리하여 로그인, 로그아웃, 회원가입, 계정관리 등등의 통합적인 기능을 제공합니다.

공식문서 : https://github.com/pennersr/django-allauth

🎯Site framework

사이트 프레임워크는 장고로 만든 사이트의 도메인이름과 같은 기본 정보를 보관하는 곳 입니다. 이름 설정을 통해 제작한 기능을 웹사이트에 연결할 때 사용합니다. 이러한 사이트 프레임워크는 다음 기능을 수행할 때 유용합니다.

  1. 콘텐츠 하나를 다중의 사이트에 보여주고 싶을 때 -> sites 모델을 manytomany field로 정의합니다. 위의 과정을 통해 django admin으로 content를 단일 데이터로 관리하며, 이를 다중의 사이트에 일괄적으로 적용할 수 있습니다.
  2. 콘텐츠를 단일 사이트에만 보여주고 싶을때 -> sites모델을 foreignkey로 정의합니다.
  3. 장고에서 다중의 사이트를 관리할 때 -> 작성된 view코드에서 설정한 sites의 객체들을 호출할 수도 있습니다. 예시 :

    def example(request):
    if settings.SITE_ID == '1':
        1에 설정해둔 페이지 기능
    elif  settings.SITE_ID == '2':
        2에 설정해둔 페이지 기능
    else: 
        예외처리

🎯 AUTHENTICATION_BACKENDS

AUTHENTICATION_BACKENDS는 인증을 할 때 돌 모델을 설정하는 공간입니다. 튜플로 구성되어 있으며 이 안에 모델을 작성하면 순서대로 인증을 시도하게 됩니다. 디폴트로 django.contrib.auth.backends.ModelBackend를 통해 인증하게 되어있으며 이를 변경하고 싶다면 아래의 코드처럼 settings.py에 설정해주면 됩니다.

AUTHENTICATION_BACKENDS = [
    'allauth.account.auth_backends.AuthenticationBackend', # 소셜로그인 회원정보모델
    'django.contrib.auth.backends.ModelBackend', # Django 기본 회원정보 모델
]

Written by@이주형
平常心

GitHubFacebook