Django Rest Framework에서 JWT 구성

Lo Primero que tenemos que hacer es instalar simplejwt:

pip install djangorestframework-simplejwt


en este caso yo lo tengo configurado junto a mi archivo requirements.txt:

Django==4.0.0
django-cors-headers
django-getenv
djangorestframework==3.12.2
psycopg2-binary
djangorestframework-simplejwt


Una vez instalada la dependsencia vamos a nuestro proyecto, y en urls.py agregamos las siguientes rutas:

path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),


En settings.py en las configuraciones de REST_FRAMEWORK definimos la autenticación que vamos a usar por defto con el framework:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),

    'DEFAULT_PERMISSIONS_CLASSES':(
        'rest_framework.permissions.IsAuthenticated'
    )
}


Sin olvidarnos que en INSTALLED_APPS tenemos que indicar que vamos a usar rest_framework:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
]


Una vez hecho esto, en nuestras view podemos pedir que para que alguien haga una petición hacia nuestro endpoint, como mínimo tiene que estar autenticado, y el método de autenticación que configuramos es el de JWT:

from django.http import JsonResponse
from rest_framework import permissions, status
from rest_framework.decorators import api_view, permission_classes


@api_view(["POST"])
@permission_classes([permissions.IsAuthenticated])
def create_post(request):
    return JsonResponse({'msg': 'todo funcionando'})


Probando la configuración:
  • 사인 인증:


  • Autenticándonos para obtener el token


  • Utilizando el token para hacer peticiones

  • 좋은 웹페이지 즐겨찾기