Djangoでallauthを使ってメールの2段階認証を実装する
やること
Djangoでallauthを使ってユーザ登録機能を作る。
仮登録→メールが送信される→メールの中のリンクをクリックして本登録完了 の流れ。
今回はメールを送信する代わりにメールの文面をコンソールに表示する。
完成例はこちら↓ (多少カスタマイズしているので、完全に同じものができるわけではない。特に本登録完了画面)
allauthでは、会員登録だけでなく、ログイン・ログアウト・パスワード再設定・Facebookやgoogleなどによるソーシャルログイン機能なども実装することができるが、今回はユーザ登録のみを作る。
前提
ユーザ登録機能を作るプロジェクトは作成済みとする。
環境
Ubuntu20-04
Django3.1
django-allauth 0.42.0
手順
①django-allauthのインポート
pip install django-allauth
でインポートできる。
②ユーザ認証用のアプリケーション「accounts」を作成
python manage.py startapp accounts
③settings.py
下記の#の部分を追加する。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP-DIRS': True,
'OPTIONS': {
'context_processors': [
`django.template.context_processors.request',#
],
},
},
]
AUTHENTICATION_BACKENDS = [
#allauthのあるなしにかかわらず、管理画面にユーザーネームでログインするのに必要
'django.contrib.auth.backends.Modelbackend',
#allauthを使うときに必要
'django.account.auth_backends.AuthenticationBackend',#
]
INSTALLED_APPS = [
'django.contrib.auth',#
'django.contrib.messages',#
'django.contrib.sites',#
'allauth',#
'allauth.account',#
'allauth.socialaccount',#
]
SITE_ID = 1
#ユーザ登録確認メールを送信
ACCOUNT_EMAIL_VARIFICATION = 'mandatory'
ACCOUNT_EMAIL_REQUIRED = True
#コンソール上にユーザ登録確認メールを表示。ローカルで確認するため
EMAIL_BACKEND = 'django.core.backends.console.EmailBackend'
ACCOUNT_EMAIL_VARIFICATION
のところで、'mandatory'
にすると確認メールが送られ、'none'
にするとメールは送られない。
④urls.py
from django.urls import path, include
urlpatterns = [
path('accounts/', include('allauth.urls')),#
]
ユーザ登録ページのurlやテンプレートは不要。allauthが提供しているため。
(ただしデザインはあんまりなので、カスタマイズした方がいい。でもこの記事では扱わない)
ちなみに、allauthが提供しているurlは、以下で確認できる。
Django - Django Allauthを使う | django Tutorial
⑤マイグレーション
python manage.py migrate
を実行する。
⑥確認
python manage.py runserver
を実行して、localhost:8000/accounts/signup/ にアクセスする。
終わりに
自分が会員登録機能を作っていて少し手間取ったので、覚え書きとして書きました。
筆者はDjango初心者です。間違っているところがある可能性が大いにあるので、発見された際はご指摘いただけるとありがたいです。
参考
Welcome to django-allauth! -django-allauth 0.32.0
爆速で作れるDjangoユーザ認証機能【django-allauth】
Author And Source
この問題について(Djangoでallauthを使ってメールの2段階認証を実装する), 我々は、より多くの情報をここで見つけました https://qiita.com/fukiko2020/items/3bc8ab3752ac1663e2de著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .