Featured image of post Wagtailのサイトにユーザ認証機能を追加する ①設定編

Wagtailのサイトにユーザ認証機能を追加する ①設定編

こんにちは。 遅くなりましたが、2021年最初の記事です。今年もよろしくお願いします。

Wagtailのサイトにdjango-allauthというパッケージを使って、ユーザ認証機能を追加していきたいと思います。Djangoには、認証システムが付属していますが、Github、Gmail、Facebookなどのソーシャルアカウント認証はサポートしていません。django-allauthパッケージはその辺りもサポートされています。

以下でインストールします。

1
pip install django-allauth

基本的には以下に記載にあるように設定していきます。 https://django-allauth.readthedocs.io/en/latest/installation.html

base.pyに以下を追加します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                #以下を追加
                'django.template.context_processors.request',
            ],
        },
    },
]

また、同じくbase.pyにallauthバックエンドを使用していることを指定します。

1
2
3
4
5
6
7
8
9
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つを入れます。既にあるものもあります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
INSTALLED_APPS = [
    ...
    # The following apps are required:
    'django.contrib.auth',
    'django.contrib.messages',
    'django.contrib.sites',

    'allauth',
    'allauth.account',
    'allauth.socialaccount',

base.pyに以下を追加します。複数のサイトで利用していなければ、1を指定します。

1
SITE_ID = 1

以下は好みで設定します。設定値はこちらを参照にしてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
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に以下を追加します。

1
2
3
4
5
urlpatterns = [
    ...
    path('', include('allauth.urls')),
    ...
]

最後に以下を実行して、DBに反映して、サーバー起動します。

1
2
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/)でログイン済みの可能性があります。管理者サイトをログアウトして、もう一度確認してみてください。

次回はこの味気ないテンプレートを変更していこうと思います。

Wagtailのサイトにユーザ認証機能を追加する ②テンプレート編

Wagtailのサイトにユーザ認証機能を追加する ②テンプレート編

Licensed under CC BY-NC-SA 4.0
Hugo で構築されています。
テーマ StackJimmy によって設計されています。