수색…


매개 변수

환경 그렇다
일부 구성 Django-Allauth (대부분 시간 사용)와 함께 사용하기 편리한 기본 설정. 자세한 구성 옵션은 구성을 참조하십시오.
ACCOUNT_AUTHENTICATION_METHOD (= "사용자 이름"또는 "이메일"또는 "사용자 이름 이메일") 사용할 로그인 방법을 지정합니다. 사용자가 사용자 이름, 전자 메일 주소 또는 둘 중 하나를 입력하여 로그인하는지 여부를 지정합니다. 이것을 "email"로 설정하면 ACCOUNT_EMAIL_REQUIRED = True가 필요합니다.
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (= 3) 전자 메일 확인 메일의 만료 날짜를 지정합니다 (일 수).
ACCOUNT_EMAIL_REQUIRED (= 거짓) 가입시 사용자는 전자 메일 주소를 양도해야합니다. ACCOUNT_AUTHENTICATION_METHOD 설정과 함께 표시됩니다.
ACCOUNT_EMAIL_VERIFICATION (= "선택 사항") 가입시 전자 메일 확인 방법을 결정합니다. "필수", "선택"또는 "없음"중 하나를 선택하십시오. "필수"로 설정하면 전자 메일 주소가 확인 될 때까지 사용자가 로그인 할 수 없습니다. 확인되지 않은 전자 메일 주소로 로그인 할 수있게하려면 "선택 사항"또는 "없음"을 선택하십시오. "선택 사항"의 경우 전자 메일 확인 메일이 계속 전송되는 반면 "없음"인 경우 전자 메일 확인 메일은 전송되지 않습니다.
ACCOUNT_LOGIN_ATTEMPTS_LIMIT (= 5) 실패한 로그인 시도 횟수. 이 수가 초과되면 사용자는 지정된 ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT 초 동안 로그인 할 수 없습니다. 이것은 allauth 로그인 뷰를 보호하지만 장고의 관리자 로그인이 무차별 적으로 강제되는 것을 보호하지는 않습니다.
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (= 거짓) 암호를 변경하거나 설정 한 후 사용자가 자동으로 로그 아웃되는지 여부를 결정합니다.
SOCIALACCOUNT_PROVIDERS (= dict) 공급자 별 설정이 포함 된 사전입니다.

쉬운 방법 : python-social-auth

python-social-auth는 소셜 인증 및 권한 부여 메커니즘을 단순화하는 프레임 워크입니다. 여기에는 많은 사회적 백엔드 (Facebook, Twitter, Github, LinkedIn 등)가 포함되어 있습니다.

설치

먼저 python-social-auth 패키지를 설치해야합니다.

pip install python-social-auth

또는 github에서 코드를 다운로드 하십시오. 이제 이것을 requirements.txt 파일에 추가하시기 바랍니다.

CONFIGURING settings.py

settings.py에서 추가 :

INSTALLED_APPS = (
    ...
    'social.apps.django_app.default',
    ...
)

백엔드 구성

AUTHENTICATION_BACKENDS은 우리가 사용할 백엔드를 포함하고 있으며 우리가 필요한 것을 넣을뿐입니다.

AUTHENTICATION_BACKENDS = (
    'social.backends.open_id.OpenIdAuth',
    'social.backends.google.GoogleOpenId',
    'social.backends.google.GoogleOAuth2',
    'social.backends.google.GoogleOAuth',
    'social.backends.twitter.TwitterOAuth',
    'social.backends.yahoo.YahooOpenId',
    ...
    'django.contrib.auth.backends.ModelBackend',
)

프로젝트 settings.py 에는 아직 AUTHENTICATION_BACKENDS 필드가 없을 수 있습니다. 이 경우 필드를 추가하십시오. 사용자 이름 / 비밀번호로 로그인을 처리하므로 'django.contrib.auth.backends.ModelBackend', 를 놓치지 않도록주의하십시오.

예를 들어 Facebook 및 Linkedin Backend를 사용하는 경우 API 키를 추가해야합니다.

SOCIAL_AUTH_FACEBOOK_KEY = 'YOURFACEBOOKKEY'
SOCIAL_AUTH_FACEBOOK_SECRET = 'YOURFACEBOOKSECRET'

SOCIAL_AUTH_LINKEDIN_KEY = 'YOURLINKEDINKEY'
SOCIAL_AUTH_LINKEDIN_SECRET = 'YOURLINKEDINSECRET'

참고 : Facebook 개발자Linkedin 개발자 는 nedded 키를 얻을 수 있습니다. 여기서 전체 목록과 API 키와 키 비밀을 구체화하는 각각의 방법을 볼 수 있습니다.

비밀 키에 대한 참고 사항 : 비밀 키는 비밀로 유지해야합니다. 다음 은 스택 오버플로에 대한 설명입니다. 이 튜토리얼 은 환경 변수를 학습하는 데 도움 됩니다.

TEMPLATE_CONTEXT_PROCESSORS는 리디렉션, 백엔드 및 기타 작업에 도움이되지만 처음에는 다음과 같이하면됩니다.

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'social.apps.django_app.context_processors.backends',
    'social.apps.django_app.context_processors.login_redirect',
    ...
)

Django 1.8에서는 위와 같이 TEMPLATE_CONTEXT_PREPROCESSORS 설정이 사용되지 않습니다. 이것이 당신을위한 경우라면 당신은 TEMPLATES dict 안에 그것을 추가 할 것입니다. 당신의 모습은 다음과 비슷할 것입니다 :

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "templates")],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'social.apps.django_app.context_processors.backends',
                'social.apps.django_app.context_processors.login_redirect',
            ],
        },
    },
] 

맞춤 사용자 사용하기

커스텀 사용자 모델을 사용하고 있고 그것과 연계하고 싶다면, 다음 라인을 추가하십시오 (여전히 settings.py에 )

SOCIAL_AUTH_USER_MODEL = 'somepackage.models.CustomUser'    

CustomUser 는 기본 사용자를 상속 또는 추상화하는 모델입니다.

구성 urls.py

# if you haven't imported inlcude make sure you do so at the top of your file
from django.conf.urls import url, include

urlpatterns = patterns('',
    ...
    url('', include('social.apps.django_app.urls', namespace='social'))
    ...
)

다음 데이터베이스를 동기화하여 필요한 모델을 생성해야합니다.

./manage.py migrate

마침내 우리는 놀 수있다!

어떤 템플릿에서는 다음과 같이 추가해야합니다 :

    <a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}">Login with Facebook</a>
    <a href="{% url 'social:begin' 'linkedin' %}?next={{ request.path }}">Login with Linkedin</a>

다른 백엔드를 사용하는 경우 백엔드 이름으로 'facebook'만 변경하면됩니다.

사용자 로깅

로그인 한 사용자는 로그 아웃 할 수있는 기능을 만들고 싶을 것입니다. 로그인 템플릿이 표시된 위치 근처의 일부 템플릿에 다음 태그를 추가하십시오.

<a href="{% url 'logout' %}">Logout</a>

또는

<a href="/logout">Logout</a>

다음과 유사한 코드를 사용하여 urls.py 파일을 편집하고 싶을 것입니다.

url(r'^logout/$', views.logout, name='logout'),

마지막으로 다음과 유사한 코드로 views.py 파일을 편집하십시오.

def logout(request):
    auth_logout(request)
    return redirect('/')

장고 Allauth 사용하기

모든 프로젝트에서 Django-Allauth는 설치가 쉬우면서도 다음과 같은 많은 기능을 갖춘 상태로 즉시 제공됩니다.

  • 약 50 개 이상의 소셜 네트워크 인증
  • 지역 및 사회 계좌에 가입하십시오
  • 여러 개의 소셜 계정
  • 소셜 계정에 대한 선택적인 즉석 가입 - 질문 없음
  • 전자 메일 주소 관리 (여러 전자 메일 주소, 기본 설정)
  • 암호 잊어 버린 흐름 전자 메일 주소 확인 흐름

손을 더럽히는 데 관심이 있다면 Django-Allauth는 인증 시스템의 프로세스와 사용법을 조정할 수있는 추가 구성으로 방해를받지 않습니다.

아래 단계는 Django 1.10 이상을 사용하고 있다고 가정합니다.

설정 단계 :

pip install django-allauth

settings.py 파일에서 다음과 같이 변경하십시오.

# Specify the context processors as follows:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # Already defined Django-related contexts here

                # `allauth` needs this from django. It is there by default,
                # unless you've devilishly taken it away.
                'django.template.context_processors.request',
            ],
        },
    },
]

AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth`
    'django.contrib.auth.backends.ModelBackend',

    # `allauth` specific authentication methods, such as login by e-mail
    'allauth.account.auth_backends.AuthenticationBackend',
)

INSTALLED_APPS = (
# Up here is all your default installed apps from Django

# The following apps are required:
'django.contrib.auth',
'django.contrib.sites',

'allauth',
'allauth.account',
'allauth.socialaccount',

# include the providers you want to enable:
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.facebook',
)

# Don't forget this little dude.
SITE_ID = 1

위의 settings.py 파일의 변경 사항을 수행하고 urls.py 파일로 이동하십시오. yourapp/urls.py 또는 ProjectName/urls.py 가 될 수 있습니다. 일반적으로 ProjectName/urls.py 선호합니다.

urlpatterns = [
    # other urls here
    url(r'^accounts/', include('allauth.urls')),
    # other urls here
]

단순히 include('allauth.urls') 추가하면 다음 URL에서 무료로 제공됩니다.

^accounts/ ^ ^signup/$ [name='account_signup']
^accounts/ ^ ^login/$ [name='account_login']
^accounts/ ^ ^logout/$ [name='account_logout']
^accounts/ ^ ^password/change/$ [name='account_change_password']
^accounts/ ^ ^password/set/$ [name='account_set_password']
^accounts/ ^ ^inactive/$ [name='account_inactive']
^accounts/ ^ ^email/$ [name='account_email']
^accounts/ ^ ^confirm-email/$ [name='account_email_verification_sent']
^accounts/ ^ ^confirm-email/(?P<key>[-:\w]+)/$ [name='account_confirm_email']
^accounts/ ^ ^password/reset/$ [name='account_reset_password']
^accounts/ ^ ^password/reset/done/$ [name='account_reset_password_done']
^accounts/ ^ ^password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/$ [name='account_reset_password_from_key']
^accounts/ ^ ^password/reset/key/done/$ [name='account_reset_password_from_key_done']
^accounts/ ^social/
^accounts/ ^google/
^accounts/ ^twitter/
^accounts/ ^facebook/
^accounts/ ^facebook/login/token/$ [name='facebook_login_by_token']

마지막으로 python ./manage.py migrate 를 수행하여 Django-allauth의 마이그레이션을 데이터베이스에 적용하십시오.

평상시처럼 추가 한 소셜 네트워크를 사용하여 앱에 로그인하려면 네트워크의 소셜 계정 세부 정보를 추가해야합니다.

Django 관리자 ( localhost:8000/admin )에 로그인하고 Social Applications 아래에 Social Applications 계정 세부 정보를 추가하십시오.

소셜 애플리케이션 섹션에 기입 할 세부 정보를 얻으려면 각 인증 공급자에게 계정이 필요할 수 있습니다.

구성 및 조정할 수있는 구성에 대한 자세한 내용은 구성 페이지를 참조하십시오 .



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow