【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
を発行する形にします。
【django】メールアドレスを使った認証のモデル作成方法
django標準モデルでは、ユーザー名とパスワードによる認証が用いられています。 しかし、現在ではメールアドレスを使った認証方法が主流であるため、一部を書き換える必…
ユーザー作成時に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について記事まとめ
コメント