django 中 Oauth2 實現第三方登陸
python網站第三方登入,social-auth-app-django模組,
social-auth-app-django模組是專門用於Django的第三方登入OAuth2協議模組
目前流行的第三方登入都採用了OAuth2協議
安裝
pip install social-auth-app-django
依賴關係
PyJWT-1.5.3
certifi-2017.7.27.1
chardet-3.0.4
defusedxml-0.5.0
idna-2.6
oauthlib-2.0.4
python3-openid-3.1.0
requests-2.18.4
requests-oauthlib-0.8.0
six-1.11.0
social-auth-app-django-1.2.0
social-auth-core-1.4.0
urllib3-1.22
** 使用文件 http://coding.imooc.com/lesson/131.html#mid=7393**
使用配置
1.將social_django新增到app配置,settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1',
**'social_django',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 配置資料庫引擎名稱
'NAME': 'jxiou', # 資料庫名稱
'USER': 'test_user', # 資料庫使用者名稱
'PASSWORD': 'test_user', # 資料庫密碼
'HOST': '127.0.0.1', # 資料庫連結地址,為伺服器ip
'PORT': '3306', # 資料庫埠
}
}
2,輸入命令migrate來生成第三方登入需要的表
3.配置需要的第三方登入模組,settings.py
第三方登入模組放在social_core外掛下的backends目錄,裡面有很多第三方登入模組,比如,微信,微博,QQ等
# 設定要使用的第三方登入
AUTHENTICATION_BACKENDS = (
**'social_core.backends.weixin.WeixinOAuth2', # 使用微信登入
**'social_core.backends.qq.QQOAuth2', # 使用QQ登入
'django.contrib.auth.backends.ModelBackend', # 指定django的ModelBackend類
)
4.配置第三方登入路由url
from django.conf.urls import url, include # 匯入django自在的include邏輯
from django.contrib import admin
from app1.views import alipaview
urlpatterns = [
url(r'^admin/', admin.site.urls),
# 支付寶返回url
url(r'^alipa/', alipaview, name='alipa'),
# 第三方登入
**url('', include('social_django.urls', namespace='social'))
]
5.配置 TEMPLATES,settings.py
配置這裡,當使用者登入的時候,如果使用者不存在,會自動在使用者表建立使用者,並且關聯使用者資訊
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_django.context_processors.backends',
**'social_django.context_processors.login_redirect',
],
},
},
]
使用第三方配置
# 設定要使用的第三方登入
AUTHENTICATION_BACKENDS = (
'social_core.backends.weibo.WeiboOAuth2', # 使用微博登入
'social_core.backends.weixin.WeixinOAuth2', # 使用微信登入
'social_core.backends.qq.QQOAuth2', # 使用QQ登入
'django.contrib.auth.backends.ModelBackend', # 指定django的ModelBackend類
)
# 配置微博開放平臺授權
# SOCIAL_AUTH_要使用登入模組的名稱大小_KEY,其他如QQ相同
SOCIAL_AUTH_WEIBO_KEY = '1359594035'
SOCIAL_AUTH_WEIBO_SECRET = '7d33714722f4e5572c116ce2b2433a99'
# 登入成功後跳轉頁面
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'
配置後,啟動程式,根據url來構造請求地址和,回撥地址
# social_django.urls 原始碼中
urlpatterns = [
# authentication / association
# <backend>是一個變數接收要使用登入模組的名稱小寫
# 請求URL
url(r'^login/(?P<backend>[^/]+){0}$'.format(extra), views.auth,
name='begin'),
# 回撥URL
url(r'^complete/(?P<backend>[^/]+){0}$'.format(extra), views.complete,
name='complete'),
# disconnection
url(r'^disconnect/(?P<backend>[^/]+){0}$'.format(extra), views.disconnect,
name='disconnect'),
url(r'^disconnect/(?P<backend>[^/]+)/(?P<association_id>\d+){0}$'
.format(extra), views.disconnect, name='disconnect_individual'),
]
請求URL構造為:http://域名或者ip/login/使用模組名稱小寫/
如:http://127.0.0.1:8000/login/weibo/
回撥URL構造為:http://域名或者ip/complete/使用模組名稱小寫/
如:http://127.0.0.1:8000/complete/weibo/
回撥URL一般需要設定到開放平臺的後臺
前臺頁面可以呼叫,請求url
<a href="{% url "social:begin" "weibo" %}">微博登入</a>
social_auth_usersocialauth 資料表裡就是管理使用者表的資訊
相關文章
- 在pycharm中用python Django來實現登陸首頁PyCharmPythonDjango
- JS實現登陸介面JS
- OAuth2實現單點登入SSOOAuth
- koa2+vue實現登陸以及是否登陸控制Vue
- js實現回車登陸JS
- Spring Cloud Security:Oauth2實現單點登入SpringCloudOAuth
- sau交流學習社群第三方登陸github--oauth來實現使用者登入GithubOAuth
- 第三方登陸:微信掃碼登入
- linux 實現開機自動登陸Linux
- Java QQ授權第三方登陸Java
- Java Web簡單登陸功能的實現JavaWeb
- Nuxt 實現使用者鑑權登陸UX
- Go 語言實現 QQ 掃碼登陸Go
- 9.Django之登陸註冊驗證登出Django
- Java實現QQ第三方登入Java
- 面試:讓你設計一個第三方賬號登陸你該如何實現?面試
- uni-app第三方登陸-微信APP
- django與小程式實現登入驗證功能Django
- Laravel5.6 實現第三方登入 微信登入Laravel
- Android讀取XML實現軟體自動登陸AndroidXML
- 用不同的庫實現模擬登陸知乎!
- php怎麼實現登陸後跳轉網頁PHP網頁
- 全部按教程走,第三方登陸,返回的是:
- laravel實現第三方qq一鍵登入Laravel
- SSH安全登陸原理:密碼登陸與公鑰登陸密碼
- 【SpringSecurity OAuth2 JWT】實現SSO單點登入 第一篇SpringGseOAuthJWT
- Flutter開始干係列-實現一個登陸頁Flutter
- Linux 伺服器使用 SSH 連線 實現免登陸Linux伺服器
- PHP 會話(Session)如何實現使用者登陸功能PHP會話Session
- express基於JWT實現使用者登陸授權ExpressJWT
- OAuth2原理與LinkedIn的第三方分享實戰OAuth
- Lumen/Laravel 中支付寶 / 微信第三方 App 登陸LaravelAPP
- 簡單實現第三方qq登入和分享
- [譯] 學習 Spring Security(八):使用 Spring Security OAuth2 實現單點登入SpringOAuth
- 微信授權註冊或微信登陸 微信授權登陸 基於若依vue 實現Vue
- 「手把手」利用websocket實現手機掃碼登陸後,同步登陸資訊到web端頁面Web
- django中多個app的路由實現DjangoAPP路由
- redis實現統計使用者連續登陸天數Redis