こんにちは。
遅くなりましたが、2021年最初の記事です。今年もよろしくお願いします。
Wagtailのサイトにdjango-allauthというパッケージを使って、ユーザ認証機能を追加していきたいと思います。Djangoには、認証システムが付属していますが、Github、Gmail、Facebookなどのソーシャルアカウント認証はサポートしていません。django-allauthパッケージはその辺りもサポートされています。
以下でインストールします。
pip install django-allauth
基本的には以下に記載にあるように設定していきます。
https://django-allauth.readthedocs.io/en/latest/installation.html
base.pyに以下を追加します。
TEMPLATES = [ { ... 'OPTIONS': { 'context_processors': [ ... #以下を追加 'django.template.context_processors.request', ], }, }, ]
また、同じくbase.pyにallauthバックエンドを使用していることを指定します。
AUTHENTICATION_BACKENDS = [ ... # Needed to login by username in Django admin, regardless of `allauth` 'django.contrib.auth.backends.ModelBackend', # `allauth` specific authentication methods, such as login by e-mail 'allauth.account.auth_backends.AuthenticationBackend', ... ]
base.pyのINSTALLED_APPSに以下6つを入れます。既にあるものもあります。
INSTALLED_APPS = [ ... # The following apps are required: 'django.contrib.auth', 'django.contrib.messages', 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount',
base.pyに以下を追加します。複数のサイトで利用していなければ、1を指定します。
SITE_ID = 1
以下は好みで設定します。設定値はこちらを参照にしてください。
LOGIN_URL = '/login/' LOGIN_REDIRECT_URL = '/' ACCOUNT_AUTHENTICATION_METHOD = "username_email" ACCOUNT_CONFIRM_EMAIL_ON_GET = True ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = "mandatory" ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True ACCOUNT_LOGOUT_ON_GET = True ACCOUNT_LOGIN_ON_PASSWORD_RESET = True ACCOUNT_LOGOUT_REDIRECT_URL = '/login/' ACCOUNT_PRESERVE_USERNAME_CASING = False ACCOUNT_SESSION_REMEMBER = True ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = False ACCOUNT_USERNAME_BLACKLIST = ["admin"] ACCOUNT_USERNAME_MIN_LENGTH = 5 ACCOUNT_EMAIL_SUBJECT_PREFIX = "[SecondHerb]"
次にurls.pyに以下を追加します。
urlpatterns = [ ... path('', include('allauth.urls')), ... ]
最後に以下を実行して、DBに反映して、サーバー起動します。
python manage.py migrate python manage.py runserver
以下にアクセスしてみます。
http://127.0.0.1:8000/login/
このようなログイン画面の表示になります。
もしログイン画面が表示されず、Home等にリダイレクトされる場合(LOGIN_REDIRECT_URLの設定による)、管理者サイト(http://127.0.0.1:8000/admin/)でログイン済みの可能性があります。管理者サイトをログアウトして、もう一度確認してみてください。
次回はこの味気ないテンプレートを変更していこうと思います。
コメント