跳轉至

建立 2026-09-17 更新 2026-09-17

Django-Allauth

Django 內建的驗證系統(見 使用者驗證)只處理「帳號+密碼」登入。如果想讓使用者用 Google、GitHub、Facebook 等第三方帳號直接登入(社群登入 / Social Login),或需要更完整的 Email 驗證、雙因素驗證流程,最常用的第三方套件是 django-allauth

官方文件:django-allauth documentation

安裝與基本設定

pip install django-allauth

INSTALLED_APPS 需要加上 allauth 相關的 App,以及要支援的社群登入提供者(provider):

# settings.py
INSTALLED_APPS = [
    ...
    "django.contrib.sites",  # allauth 依賴 sites framework
    "allauth",
    "allauth.account",
    "allauth.socialaccount",
    "allauth.socialaccount.providers.google",  # 依需求增減提供者
]

SITE_ID = 1

AUTHENTICATION_BACKENDS = [
    "django.contrib.auth.backends.ModelBackend",
    "allauth.account.auth_backends.AuthenticationBackend",
]

再把 allauth 的網址掛進 Project 的 urls.py

# urls.py
urlpatterns = [
    ...
    path("accounts/", include("allauth.urls")),
]

設定社群登入提供者

每個社群登入提供者(Google、GitHub…)都要先到該平台的開發者後台申請 OAuth 用戶端 ID 與密鑰,再到 Django Admin 的「Social applications」新增一筆設定,把用戶端 ID/密鑰、以及要套用的網站(Site)對應起來。詳細的各家提供者設定步驟,請以 官方文件的 Providers 章節 為準,不同提供者的申請流程與所需權限(scope)略有差異。

這個套件還能做什麼

除了社群登入,django-allauth 也整合了:

  • Email 驗證(註冊後寄送驗證信)。
  • 密碼重設、變更等流程的現成 View 與 Template。
  • 雙因素驗證(Two-Factor Authentication)。
  • 用 REST API 存取驗證流程的「headless」模式,適合前後端分離或行動 App。

適合直接沿用 django-allauth 的完整流程,取代 使用者驗證 一頁介紹的內建 django.contrib.auth.urls;兩者也可以並存,依需求選擇要用哪一套登入頁面。

下一步

驗證系統完成後,記得替重要功能寫測試,確保登入、權限判斷等邏輯不會在日後修改時悄悄壞掉,請見 測試