En las settings del proyecto agregamos las apps necesarias, la autenticación y permisos.
#settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework’,
# nombre de nuestra app
'autenticacion.apps.AutenticacionConfig’,
]
#Activar autenticación y permisos
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}
DEFAULT_AUTHENTICATION_CLASSES: Define los métodos de autenticación que usará la API. • BasicAuthentication: Utiliza la autenticación básica HTTP, que implica que el cliente envíe un usuario y contraseña en cada solicitud. No es recomendado para producción sin HTTPS.
- DEFAULT_PERMISSION_CLASSES: Define quién puede acceder a la API. • IsAuthenticated: Solo permite acceso a usuarios autenticados, rechazando solicitudes anónimas.
En los endpoints agregamos el tipo de permiso que corresponda a cada endpoint. Ejemplo:
Solo autenticación
#views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
class MensajeSecretoView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request):
return Response({"mensaje": "¡Perfecto! Accediste al contenido secreto."})
Solo Administradores
#views.py
from rest_framework.permissions import IsAdminUser
class AdminOnlyView(APIView):
permission_classes = [IsAdminUser]
def get(self, request):
return Response({"mensaje": "¡Hola, Admin! Tienes acceso exclusivo."})
Ahora debemos probar en Postman dos casos para verificar comportamiento de la solicitud: • Caso sin autenticación • Caso con usuario y contraseña (En Postman, pestaña Authorization, Type: “Basic Auth”)
Si aún no tienes usuarios en la base de datos, puedes crear uno de dos maneras:
Ejecuta el siguiente comando en la terminal dentro de tu proyecto:
python manage.py createsuperuser