1. 程式人生 > >django-allauth的安裝和配置

django-allauth的安裝和配置

文章轉載於:https://mp.weixin.qq.com/s/IWOqbp5ZUuLPkMt25ylgPQ

django-allauth是最受歡迎的管理使用者登入與註冊的第三方Django安裝包。django-allauth支援本地和第三方賬號(Github,百度、微博、微信等等。。),集成了郵箱驗證、密碼修改、本地賬號關聯(多個)第三方賬號等各種功能。

安裝

pip install django-allauth

settings.py中的配置

INSTALLED_APPS = [# 必須安裝的app
       'django.contrib.auth', 
       'django.contrib.sites', 'allauth',
       'allauth.account',   
       'allauth.socialaccount',
      # 下面是第三方賬號相關的,比如github 
      'allauth.socialaccount.providers.github',
]
 # django-allauth相關設定
AUTHENTICATION_BACKENDS = (
      # django admin所使用的使用者登入與django-allauth無關 
      'django.contrib.auth.backends.ModelBackend',
      # `allauth` specific authentication methods, such as login by e-mail 
      'allauth.account.auth_backends.AuthenticationBackend',
)
# 前面我們app裡添加了django.contrib.sites,需要設定
SITE_IDSITE_ID = 1
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'  # 當用戶登入時,既可以使用使用者名稱也可以使用email
ACCOUNT_EMAIL_REQUIRED = True       # 註冊時必須填寫email
LOGIN_REDIRECT_URL = '/accounts/個人中心'    # 設定登入後跳轉連結


# django-allauth相關設定
AUTHENTICATION_BACKENDS = (
    # django admin使用的使用者登入於django-allauth無關
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
)

# django的郵箱設定,使用allauth的話,註冊後它會給郵箱傳送一條註冊資訊給註冊郵箱驗證
EMAIL_HOST = 'smtp.qq.com'  # 這裡使用QQ的smtp服務
EMAIL_PORT = 25
EMAIL_HOST_USER = '280****
[email protected]
' # 你的 QQ 賬號和授權碼 EMAIL_HOST_PASSWORD = 'vdltztnwuggbddei' EMAIL_USE_TLS = True # 這裡必須是 True,否則傳送不成功 EMAIL_FROM = '280****[email protected]' # 發件人郵箱 DEFAULT_FROM_EMAIL = '280****[email protected]' # 預設發件人郵箱

在根urls.py中新增django-allauth的路徑

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('allauth.urls')),
]

django-allauth常見設定選項

你也可以新增其它設定選項來實現你所想要的功能, 比如設定郵件確認過期時間,限制使用者使用錯誤密碼登入的持續時間。

  • ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email"):指定要使用的登入方法(使用者名稱、電子郵件地址或兩者之一)

  • ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (=3):郵件確認郵件的截止日期(天數)

  • ACCOUNT_EMAIL_VERIFICATION (="optional"):註冊中郵件驗證方法:“強制(mandatory)”,“可選(optional)”或“否(none)”之一

  • ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN (=180):郵件傳送後的冷卻時間(以秒為單位)

  • ACCOUNT_LOGIN_ATTEMPTS_LIMIT (=5):登入嘗試失敗的次數

  • ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT (=300):從上次失敗的登入嘗試,使用者被禁止嘗試登入的持續時間

  • ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION (=False):更改為True,使用者一旦確認他們的電子郵件地址,就會自動登入

  • ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (=False):更改或設定密碼後是否自動退出

  • ACCOUNT_LOGIN_ON_PASSWORD_RESET (=False):更改為True,使用者將在重置密碼後自動登入

  • ACCOUNT_SESSION_REMEMBER (=None):控制會話的生命週期,可選項還有:False,True

  • ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE (=False):使用者註冊時是否需要輸入郵箱兩遍

  • ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE (=True): 使用者註冊時是否需要使用者輸入兩遍密碼

  • ACCOUNT_USERNAME_BLACKLIST (=[]):使用者不能使用的使用者名稱列表

  • ACCOUNT_UNIQUE_EMAIL (=True): 加強電子郵件地址的唯一性

  • ACCOUNT_USERNAME_MIN_LENGTH (=1):使用者名稱允許的最小長度的整數

  • SOCIALACCOUNT_AUTO_SIGNUP (=True):使用從社會帳戶提供者檢索的欄位(如使用者名稱、郵件)來繞過登錄檔單

  • LOGIN_REDIRECT_URL (="/") 設定登入後跳轉連結

  • ACCOUNT_LOGOUT_REDIRECT_URL (="/") 設定退出登入後跳轉連結

以上基本設定後,需要同步資料庫 

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

登入admin後,設定好site域名127.0.0.1:8000和名字,再退出登入。就可以訪問以下連結檢視allauth的效果了。由於我們已經設定好了郵箱,所以涉及郵箱驗證和密碼重置部分都可以正常進行的。

當你註冊成功後,你會收到一份郵件驗證你的郵箱。在你提交表單後,django-allauth會自動檢測使用者名稱和email是否已存在

點選郵件中的連結,點選確認就可以驗證郵箱了。如果你不需要郵箱驗證,你只需要設定ACCOUNT_EMAIL_VERIFICATION (="nonel")就可以了。

django-allauth的URLs及檢視

下面是django_allauth所有內建的URLs,均可以訪問的。

  • /accounts/login/(URL名account_login): 登入

  • /accounts/signup/ (URL名account_signup): 註冊

  • /accounts/password/reset/(URL名: account_reset_password) :重置密碼

  • /accounts/logout/ (URL名account_logout): 退出登入

  • /accounts/password/set/ (URL名:account_set_password): 設定密碼 

  • /accounts/password/change/ (URL名: account_change_password): 改變密碼(需登入)

  • /accounts/email/(URL名: account_email) 使用者可以新增和移除email,並驗證

  • /accounts/social/connections/(URL名:socialaccount_connections): 管理第三方賬戶

url中有一個為 /accounts/profile/的路徑,這個是我們登入後會跳轉的連結,由於每個人的需求不一樣,所有django-allauth沒有提供這個檢視。