【DRF】Token認証の使い方

drfでトークン認証を使用する方法をご紹介いたします。

https://www.django-rest-framework.org/api-guide/authentication/#generating-tokens

Django/DjangoRESTframeworkについて記事まとめ

目次

settings.pyの編集

INSTALLED_APPS

rest_framework.authtokenを追加します。

INSTALLED_APPS = [
   ・・・
    'rest_framework',
    'rest_framework.authtoken',
   ・・・
]

REST_FRAMEWORKS

認証と権限設定について追記します。

今回は認証方法として

  • TokenAuthentication
  • SessionAuthentication

を二つ追加し、認証されたユーザーしか使えないようにIsAuthenticatedを追加しました。

https://www.django-rest-framework.org/api-guide/authentication/#setting-the-authentication-scheme

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
}

Userモデルの作成

認証用のアカウントを作成するためにUserモデルを作成します。

今回はメールアドレスとパスワードによって認証を行いTokenを発行する形にします。

詳細は下記記事をご参照ください。

ユーザー作成時にTokenを自動作成

次に、ユーザー作成時にトークンが自動作成されるように設定を行います。

https://www.django-rest-framework.org/api-guide/authentication/#generating-tokens

from django.conf import settings
from django.db.models.signals import post_save
from django.dispatch import receiver
from rest_framework.authtoken.models import Token

@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
    if created:
        Token.objects.create(user=instance)

最後にマイグレーションを行います。

$ python manage.py makemigration
$ python manage.py migrate

最後に管理画面で確認すると、Tokenの項目が追加されていて、ユーザーごとにトークンが発行できるようになっています。

Django/DjangoRESTframeworkについて記事まとめ

この記事が気に入ったら
フォローしてね!

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

コメント

コメントする

目次
閉じる