Django Rest Framework에서 views를 작성할때 로그인된 사용자에게만 허용하는, 권한 인증을 해야하는 경우가 많다.
Functional based Views 로 토큰 기반 인증(Token Authentication)을 사용하여
인증된(로그인된) 사용자만 처리하는 것에 대해 어떻게 구현해야하는지 알아본다.
Class based Views는 drf의 많은 기능들을 사용하게 해주지만
복잡하기에 더욱 간결하게 작성할 수 있는 Funtional based Views로 작성한다
먼저, 나는 rest_framework의 authentication을 사용하지않고,
django-rest-knox 라이브러리를 사용하여 구현을 하였다.
rest_framework
의 permissions
와 knox
의 TokenAuthentication
을 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
를 보게 될 것이다.
'Back-end' 카테고리의 다른 글
alembic을 이용해 DB 마이그레이션 하기 (1) (0) | 2020.03.16 |
---|---|
카카오i 스킬서버 library 개발 기록 (0) | 2019.12.29 |
Github Oauth App의 Authorization 처리 (0) | 2019.10.31 |
logstash - Windows환경에서 (0) | 2018.09.07 |
Kibana - Visualization (0) | 2018.09.05 |
댓글