如何使用 OAuth 在 Django 中構建社交身份驗證系統
社交身份驗證是一種通過社交帳戶而不是使用密碼來確認個人身份的方法。在 Web 開發中,無需密碼即可對用戶進行身份驗證始終很有幫助。這樣,他們就可以通過 Google、Twitter 或 GitHub 等社交應用程序登錄。
實施社交身份驗證可以顯著增強應用程序的安全性和完整性,最大限度地減少對廣泛的以密碼為中心的弱點的影響,同時通過消除調用多個登錄憑據的負擔來改善最終用戶的體驗。
Django 中的用戶身份驗證
Django 提供了內置的身份驗證機制,可以促進開發人員之間的無縫協作。儘管如此,它還是採用傳統的身份驗證,需要手動輸入用戶名、電子郵件、密碼、名字和姓氏等信息。
Django 的默認身份驗證系統擁有一個基本結構,缺乏當代 Web 身份驗證框架中常見的一些高級功能。因此,強烈建議合併其他組件,例如 django-allauth 庫,它可以補充和增強其功能。
如何在 Django 中啟用 OAuth
為了利用 OAuth 協議在 Django 項目中驗證用戶身份驗證,可以使用名為“django-allauth.h”的 Django 庫。
Django Allauth 是一個應用程序編程接口,旨在簡化 Django Web 開發框架內的用戶身份驗證、註冊和帳戶管理流程。要在您的 Django 項目中建立此功能,請按照下面提供的完整說明進行操作。
第 1 步:安裝並設置 Django-Allauth
如果您還沒有這樣做,建議您建立虛擬環境並使用 pip 安裝 django-allauth。這將允許將 allauth 集成到您的 Django 項目中。
pip install django-allauth
請注意,此功能僅與 Python 3.5 或更高版本以及 Django 框架 2.0 或更高版本兼容。
步驟 2:將 Django-Allauth 所需的應用程序添加到 Django
安裝“django-allauth”庫後,需要修改項目中的配置文件,在“settings.py”文件中的“INSTALLED\_APPS”參數中添加應用程序列表。具體來說,必須包括應用程序的名稱以及其正常運行可能需要的任何其他依賴項。
INSTALLED_APPS = [
"""
Add your other apps here
"""
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
關於上述應用程序,應考慮幾個關鍵因素,包括它們的特性和功能。
allauth.socialaccount 應用程序有助於通過各種社交平台進行用戶身份驗證,包括但不限於 X(以前稱為 Twitter)、Instagram 和 GitHub。
⭐ django.contrib.sites 應用程序是 django-allauth 工作所需的內置 Django 框架。該應用程序提供了在單個 Django 項目中管理和區分多個站點的能力。您可以參考Django文檔來了解它的工作原理。
步驟 3:為您的項目定義身份驗證後端
為了建立用戶認證系統,需要為用戶指定所需的驗證方法。這可以通過調整 settings.py 文件中 AUTHENTICATION\_BACKENDS 的配置來實現。具體來說,對於那些使用 django-allauth 庫的人,建議合併上述組件。
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
所提供的代碼通過定義和配置兩個不同的後端組件(即“LOCAL”和“REMOTE”)建立了一個在應用程序中實現和利用多種身份驗證機制的框架,它們作為處理用戶身份驗證請求的基礎。這些後端旨在輕鬆與各種前端框架和服務集成,使開發人員能夠在其應用程序中無縫整合靈活且安全的身份驗證選項。
初始設置是 Django 使用的標準選項,它授予管理用戶訪問管理儀表板的權限,無論通過 django-allauth 進行的任何配置如何。
Django-Allauth 是一個 Django 應用程序,可通過電子郵件/OAuth2 提供商等第三方服務簡化多個帳戶的用戶註冊和登錄,需要身份驗證後端才能有效運行。
第 4 步:添加您的站點 ID
為了正確配置您的網站,必須在您的設置文件中包含一個稱為站點 ID 的唯一標識符。作為說明,以下代碼片段演示瞭如何實現這一點:
SITE_ID = 1
管理儀表板的默認配置包括“http://example.com ”條目。如果需要,用戶可以選擇更改此設置或創建新網站。為此,他們必須登錄自己的帳戶並訪問控制面板中的“站點”應用程序。
要使用命令行界面檢索與特定 Django 站點關聯的站點 ID,請執行以下步驟:1.啟動計算機上的命令提示符或終端。2.導航到安裝 Django 框架的目錄。3.在 CLI 中運行以下命令:csspython manage.py site –output=fields site_id {your-site-name}將 {your-site-name}
替換為您要獲取其站點的特定 Django 站點的名稱ID。 sites
管理命令生成一個 JSON 文件,其中包含有關 Django 項目中配置的所有站點的信息,包括它們相應的 ID。
python manage.py shell
事實上,要在Python解釋器中執行上述腳本,必須先打開它,然後輸入代碼。此過程可以通過利用集成開發環境 (IDE) 或命令行界面 (CLI) 來完成。
from django.contrib.sites.models import Site
current_site = Site.objects.get_current()
site_id = current_site.id
site_name = current_site.name
print("Site ID:", site_id)
print("Site Name:", site_name)
上述代碼將輸出與相關網站相關的術語和標識符。
步驟 5:配置您的 URL
為了將 Django Allauth 集成到項目的 URL 配置中,您必須首先確保項目目錄中存在“urls.py”文件。如果沒有,請創建一個並添加必要的代碼片段,如下所示:pythonfrom django.urls import pathfrom allauth.account.views import SignUpView, SignInViewapp_name=‘myproject’# 替換為您的項目名稱urlpatterns=[path(‘signup/’, SignUpView.as_view(), name=‘signup’),path(’login/’, SignInView.as_view(), name=‘login’)]確保將'myproject'
替換為您的項目的實際名稱,並且如果需要,請包含任何其他必需的 URL 模式。
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
利用此配置,您可以啟動開發服務器並在 Web 瀏覽器中訪問 http://127.0.0.1:8000/accounts/。當“DEBUG”設置為“True”時,將顯示 Django Allauth 的可用 URL 模式。
完成前面概述的步驟後,您的項目現在已準備好接受社交認證。
如何在 Django 應用程序中實現 Google 登錄/註冊
安裝和配置 Django-Allauth 後,用戶將能夠使用其社交媒體帳戶(包括 Google 提供的帳戶)對自己進行身份驗證。
第 1 步:在已安裝的應用程序中註冊您的社交帳戶提供商
為了將社交媒體帳戶合併到應用程序的設置中,有必要將特定的社交媒體平台作為已安裝的應用程序包含在項目的“settings.py”文件中的“INSTALLED\_APPS”列表中。例如,如果您希望集成 Google,那麼您只需將“Google”添加到已安裝應用程序列表中即可。同樣,其他社交平台(例如 Instagram 或 X)也可以通過包含各自的名稱來添加到此列表中。
INSTALLED_APPS = [
"""
Add your other apps here
"""
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
第 2 步:在 Google 上創建您的客戶端 ID 和密鑰
要成功完成此任務,您必須擁有有效的 Google 帳戶。如果您已經進行了設置,請參閱後續指南:
⭐ 前往 Google Cloud 控制台 創建一個新項目。首先,點擊下圖所示的下拉菜單:
⭐ 接下來,點擊新建項目:
⭐ 輸入項目名稱,然後單擊“創建”按鈕:
⭐ 選擇您的項目後,單擊漢堡菜單。選擇 API 和服務,然後選擇憑據:
⭐ 接下來,單擊“配置同意屏幕”選項並選擇“外部”:
⭐ 在下一頁上,輸入應用程序的名稱,並在必要時添加電子郵件。您還可以探索一些自定義的配置。完成後,單擊“保存並繼續”。
⭐ 在左側菜單中,選擇“憑據”。之後,單擊 CREATE CREDENTIALS 並選擇 OAuth client ID 。
⭐ 接下來,選擇應用程序類型並輸入相同的名稱。對於本教程,應用程序類型將為 Web 應用程序 。
⭐ 接下來,添加授權 JavaScript 來源和授權重定向 URI 的 URI。您網站的主機應該是 JavaScript 源,系統將在身份驗證後將用戶重定向到重定向 URI。重定向 URI 通常應包含 your-host-name/accounts/google/login/callback/。對於開發模式,它將是: http://127.0.0.1:8000/accounts/google/login/callback/。完成後單擊“創建”。
⭐ 創建憑據後,您可以將您的客戶端 ID 或客戶端密鑰複製到安全位置或將其下載為 JSON 文件。
步驟 3:將您的客戶端 ID 和密鑰添加到您的 Django 應用程序中
建立所需的訪問憑據後,請將您的網絡瀏覽器定向到“ http://127.0.0.1:8000/admin ”,然後單擊“社交應用程序”從可用的菜單選項中。接下來,按照下面概述的後續說明開始創建新穎的社交應用程序:
在軟件應用程序中添加新的身份驗證提供程序時,有必要指定用戶將被授予對其帳戶的訪問權限的服務。該實體通常稱為“提供商”,並且可能會根據所使用的平台而有所不同。例如,如果應用程序支持與 Google 帳戶憑據集成,則添加的提供商將對應於 Google。同樣,如果應用程序啟用與 Snapchat 登錄信息的連接,則所選提供商將屬於 Snapchat。
當然,我很樂意幫助您為您的新社交應用程序想出一個合適且精緻的名稱。根據您的要求,以下是一些建議:1。 SocialMingle-這個名字表明用戶可以通過該平台與其他人聯繫和交流。 2. 朗朗上口,容易記住。 ConnectionsHub-這個名稱意味著該應用程序充當人們可以相互聯繫的中心樞紐。聽起來專業可靠。3。 FriendFinderX-如果您的應用專注於幫助人們尋找朋友或潛在的浪漫伴侶,那麼這個名稱可能會很有效。但是,請注意其內涵,它可能並不適合所有受眾。4。 LinkUpNow-這個名字強調了這樣的想法
請提供從 Google 獲得的安全且保密的客戶端密鑰,該密鑰將用作我們敏感信息交換的加密密鑰。
Google 的身份驗證過程不受指定關鍵字段的影響,應忽略。
最終,選擇一個集成社交媒體工具的平台。
第 4 步:測試您的 Google 身份驗證
請從管理界面註銷,然後繼續訪問 http://127.0.0.1:8000/accounts/login/ 。到達此頁面後,您會注意到通過 Google 可以使用登錄選項。
請單擊上述選項以重定向至同意屏幕。進入後,請選擇一個合適的帳戶以繼續登錄。
選擇特定帳戶後,將被引導至 http://127.0.0.1:8000/accounts/profile/(以下簡稱“目標URL”),作為應用程序成功運行的證據。此外,用戶可以開發偏離標準集的個性化模板,以更好地滿足他們的喜好和要求。
在 Django 中通過社交身份驗證增強用戶註冊
實施社交身份驗證可以顯著增強應用程序中的用戶註冊體驗。雖然存在在 Django 中啟用身份驗證的替代方法,但應根據您的具體要求謹慎考慮它們的適用性。