Django
장고와 사회 네트워크
수색…
매개 변수
환경 | 그렇다 |
---|---|
일부 구성 | 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
계정 세부 정보를 추가하십시오.
소셜 애플리케이션 섹션에 기입 할 세부 정보를 얻으려면 각 인증 공급자에게 계정이 필요할 수 있습니다.
구성 및 조정할 수있는 구성에 대한 자세한 내용은 구성 페이지를 참조하십시오 .