python網站第三方登陸,social-auth-app-django模塊,html
social-auth-app-django模塊是專門用於Django的第三方登陸OAuth2協議模塊python
目前流行的第三方登陸都採用了OAuth2協議django
安裝:後端
pip install social-auth-app-django
settings.py配置:cookie
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', #第三方登陸 'social_django', ]
下一步咱們就要執行遷移:session
python manage.py migrate
social開頭的就是咱們生成的第三方表!app
而後咱們繼續settings.py配置:測試
配置這裏,當用戶登陸的時候,若是用戶不存在,會自動在用戶表建立用戶,而且關聯用戶信息網站
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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_django.context_processors.backends',
'social_django.context_processors.login_redirect',
],
},
},
]
#在配置文件中告知Django使用咱們自定義的認證後端 AUTHENTICATION_BACKENDS = [ 'users.utils.UsernameModelBackend',
'social_core.backends.weibo.WeiboOAuth2', #微博 'django.contrib.auth.backends.ModelBackend', #指定django的modelbackend 類
]
第三方參數配置:url
# 用戶key SOCIAL_AUTH_WEIBO_KEY = ''
# 用戶secret SOCIAL_AUTH_WEIBO_SECRET = ''
# 登錄後用戶跳轉的地址 SOCIAL_AUTH_LOGIN_REDIRECT_URL = 'http://127.0.0.1:8080/index.html'
配置主路由:
urlpatterns = [ url('^xadmin/', xadmin.site.urls), # 第三方登陸 url('', include('social_django.urls')), ]
下面咱們還要配置回調URL:
在本身應用裏的高級信息裏,編輯受權回調頁http://127.0.0.1:8000/complete/weibo/,黃色箭頭指向的能夠不填寫
最後登陸測試一下,看本身social_auth_usersocialauth表裏是否有用戶
登陸成功跳到首頁,發現還處於未登陸狀態,咱們須要對源碼作修改
咱們要找到環境裏的social_core目錄下的actions.py
而後在100行左右 把下面這行代碼
return backend.strategy.redirect(url)
修改成:
from rest_framework_jwt.serializers import jwt_encode_handler,jwt_payload_handler
response = backend.strategy.redirect(url) payload = jwt_payload_handler(user) response.set_cookie("name", user.username if user.username else user.username, max_age=24 * 3600) response.set_cookie("token", jwt_encode_handler(payload), max_age=24 * 3600) return response
修改好後登陸以後就能夠顯示用戶了!