Autenticación y Permisos
Usuarios, sesiones y reglas a nivel de objeto.
Receta
Tarjeta de referencia rápida - lista para copiar y pegar.
from django.contrib.auth.decorators import login_required
@login_required
def dashboard(request):
return render(request, "dashboard.html")Cuándo usar esto:
- Autenticación de sesión para web
- Requisitos de inicio de sesión por vista
- Permisos basados en grupos
Ejemplo Funcional
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login
def signin(request):
user = authenticate(request, username="ada", password="secret")
if user:
login(request, user)
return redirect("/")Lo que esto demuestra:
authenticate+login- Modelo
User - Cookies de sesión
Profundización
Cómo Funciona
- El middleware de autenticación adjunta
request.user. - Los permisos combinan comprobaciones a nivel de modelo y personalizadas.
- Use
argon2/bcryptcomo codificadores de contraseñas en producción.
Errores Comunes
- Validación de límites omitida - Datos inválidos llegan a las capas de persistencia. Solución: Valide con Pydantic o formularios del framework en el borde.
- Fugas de trazas de pila - Los clientes ven errores internos. Solución: Mapee excepciones a respuestas HTTP estables.
- Bloqueo de bucles de eventos asíncronos - Los trabajadores se bloquean bajo carga concurrente. Solución: Use controladores asíncronos o envoltorios de
threadpool. - Secretos en control de código fuente - Credenciales filtradas a través del historial de
git. Solución: Cargue secretos desde el entorno o una bóveda en tiempo de ejecución. - Falta de observabilidad - Los incidentes son difíciles de depurar. Solución: Agregue registros estructurados, métricas e IDs de solicitud.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Framework alternativo en este cookbook | Estándar del equipo o monolito existente | API Greenfield con diferentes restricciones |
| BaaS Gestionado | MVP solo CRUD | Autenticación personalizada, flujos de trabajo o necesidades de cumplimiento |
| gRPC | RPC interno de alto rendimiento | Clientes HTTP públicos y acceso al navegador |
Preguntas Frecuentes
¿Cuándo debo adoptar la autenticación de Django?
Úselo cuando los patrones y las compensaciones de esta página coincidan con su API o límite de datos.
¿Cuál es el principal error de producción con la autenticación de Django?
Omitir la validación, los tiempos de espera o los contratos de error explícitos en el borde HTTP.
¿Cómo pruebo la autenticación de Django?
Use el cliente de prueba del framework, anule las dependencias y aserte el estado más la forma del JSON.
¿Funciona la autenticación de Django con Python 3.14?
Sí, los ejemplos se dirigen a Python 3.14 con versiones de framework fijadas del pie de página de la pila.
¿Cómo se relaciona la autenticación de Django con Pydantic 2?
Valide y serialice en los límites; mantenga los servicios funcionando con objetos de dominio tipados.
¿Síncrono o asíncrono?
Prefiera rutas asíncronas cuando las E/S dominen; mantenga el trabajo de CPU pequeño o descárguelo a trabajadores.
¿Dónde debe vivir la lógica de negocio?
Controladores delgados; los servicios poseen las reglas; los repositorios poseen las consultas.
¿Cómo documento las API?
Publique documentación OpenAPI o de esquema que coincida con los modelos de respuesta en el código.
¿Cómo manejo el versionado?
Versionado explícito de URL o encabezado con ventanas de deprecación; evite roturas silenciosas.
¿Qué debo leer a continuación?
Siga los enlaces Relacionados para obtener la siguiente capa de profundidad en esta sección.
¿Cómo me mantengo seguro?
Autentique a los llamadores, autorice por recurso, limite la tasa y nunca registre secretos.
¿Primer paso para el rendimiento?
Mida la latencia de la base de datos y de los sistemas externos antes de cambiar de framework.
Relacionado
- Conceptos Básicos de Django - Proyectos y vistas
- Modelos y el ORM - Capa de datos
- Django REST Framework - API JSON
- Escalado y Despliegue - Producción
Versiones de la Pila: Esta página se escribió para Python 3.14.0 (estable 3.14, mantenimiento 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, y uv 0.6+.