토큰 자동 생성하기 (generating tokens)

jacoblee19·2021년 2월 9일
0

Django REST Framework

목록 보기
8/9
post-thumbnail

장고 유저 모델 확장을 하여 사용하던 중, admin 사이트에서 토큰 생성이 가능했지만 유저가 생성될 때마다 토큰을 할당해줄 수는 없을까하고 검색해보니, 공식문서에 친절하게 설명이 나와있었다.

우선 토큰을 사용하기 위해 settings.py에 아래와 같이 추가해주자.

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

처음 추가했다면 migrate를 꼭 해주어야 하니 잊지 말자.

회원가입시, 자동으로 토큰 생성하기

유저를 생성할 때 마다 토큰을 할동하고 싶다면 User's의 post_save signal을 활용해 자동 생성이 가능하다.

프로젝트 models.py에 아래와 같이 입력해준다.

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)

작동하는지 테스트하기

아래와 같이 포스트맨을 활용해서 바디의 form-data로 username과 password를 담아 유저를 생성해 주었다.

아래와 같이 유저가 생성됨과 동시에 admin 페이지에서 토큰이 생성되었음을 확인할 수 있다.

기존에 있던 유저를 위한 토큰을 생성하고 싶다면?

아래와 같이 for문을 사용해 토큰 생성이 가능하다.

from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token

for user in User.objects.all():
    Token.objects.get_or_create(user=user)
profile
Back-end Developer 🙇‍♂️ 💻 🙆‍♂️

0개의 댓글