본문 바로가기
Back-end

django-rest-framework에서 Token기반인증 사용 Views 작성(Functional based Views)

by 노아론 2019. 12. 6.

Django Rest Framework에서 views를 작성할때 로그인된 사용자에게만 허용하는, 권한 인증을 해야하는 경우가 많다.

 

Functional based Views 로 토큰 기반 인증(Token Authentication)을 사용하여

인증된(로그인된) 사용자만 처리하는 것에 대해 어떻게 구현해야하는지 알아본다.

 

Class based Views는 drf의 많은 기능들을 사용하게 해주지만

복잡하기에 더욱 간결하게 작성할 수 있는 Funtional based Views로 작성한다

 

먼저, 나는 rest_framework의 authentication을 사용하지않고,

django-rest-knox 라이브러리를 사용하여 구현을 하였다.

 

rest_frameworkpermissionsknoxTokenAuthentication을 import한다.

from rest_framework.permissions import IsAuthenticated
from knox.auth import TokenAuthentication

 

그리고 Functional based Views로 만드니깐 데코레이터를 추가해 기능을 확장해본다

from rest_framework.decorators import api_view, permission_classes
from rest_framework.decorators import authentication_classes

 

전체코드는 아래와 같다.

 

views.py

from rest_framework.response import Response
from rest_framework import status
from rest_framework.permissions import IsAuthenticated
#from rest_framework.authentication import TokenAuthentication
# drf 의 TokenAuth 를 사용하는 경우는 위의 것을 import 하고 아래는 knox는 주석
from knox.auth import TokenAuthentication
from rest_framework.decorators import api_view, permission_classes
from rest_framework.decorators import authentication_classes

@permission_classes((IsAuthenticated,))
@authentication_classes([TokenAuthentication])
@api_view(['GET'])
def your_functional_view(request):
    return Response(status=status.HTTP_200_OK)

 

인증이 된 유저가 접속을 하면 STATUS 200 을 확인할 수 있게 된다.

미인증 유저는 @permission_classes에 의해 401 authorized를 보게 될 것이다.

댓글