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 dependencia 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 defecto 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 views 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:
- Sin autenticación:
- Autenticándonos para obtener el token
- Utilizando el token para hacer peticiones
Top comments (0)