DjangoでCustomUser+allauthを使用した認証

前提

こちらの記事の内容を理解するために

最も基本的なdjango-allauthを使用したログイン機能

に読むことをオススメします。

CustomUserとは何か?

  • django-allauthのCustomUserと自ら定義したユーザ(model)でログインすることができる機能。
  • CustomUserを使用しないとDjangoデフォルトUserモデルを使用する
  • DjangoはCustomUserで認証させることを推奨している
  • 0からCustomUserモデルを使用した認証方法も作成できるがいろいろな機能が備わっているallauthを使用する方がよい(個人的見解)
  • 抽象クラスのAbstractUserやAbstractBaseUserを利用して実現

実装イメージ図

準備中

CustomUserの認証アプリを作成

今回の例ではAbstractUserを使用する。
理由は本記事はCustomUser + django-allauthの利用方法であり、AbstractBaseUserを使用すると、Djangoの認証機能そのものを理解する必要があるからである。

アプリを作成。今回は認証させるアプリとしてauthとする

python manage.py startapp custom_auth

models.pyを作成

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    class Meta(AbstractUser.Meta):
        db_table = 'custom_user'

admin.pyも修正。これでAdmi

from django.contrib import admin
from .models import CustomUser

admin.site.register(CustomUser)

settings.pyを修正

INSTALLED_APPS = [
    'custom_auth', # これを追加
]

ACCOUNT_EMAIL_VERIFICATION = 'none'
AUTH_USER_MODEL = 'custom_auth.CustomUser'

urls.pyにcustom_authアプリを追加

urlpatterns = [
    path('accounts/', include('allauth.urls')), # これを追加
]

マイグレーション

python manage.py makemigrations custom_auth
python manage.py migrate custom_auth

以下のエラーが発生する場合は注意が必要。

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency user.0001_initial on database 'default'.

その場合は以下の記事を参照。

DjangoのInconsistentMigrationHistoryの解決方法

よかったらシェアしてね!

コメント

コメント一覧 (4件)

[Django] allauthで/logoutにアクセスしたらログアウト状態にする方法 | Libproc へ返信する コメントをキャンセル

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください