7.2 Guía Práctica: Sesiones y Permisos 🔐
Protección de rutas, inicio y cierre de sesión seguro, control de acceso con @login_required, grupos, permisos y decoradores propios.
4 lecciones en video centradas en autenticación, autorización y seguridad en el servidor.
Autenticación, sesiones y permisos
Protege las rutas, administra la sesión y aplica reglas de acceso según el usuario.
Autenticación: login, logout y sesiones
¿Qué aprenderás y por qué es importante?
Autenticación significa verificar la identidad de quien intenta ingresar; autorización significa decidir qué puede hacer una vez identificado. Django incorpora un sistema de usuarios y sesiones. Tras un inicio de sesión correcto, el navegador recibe una cookie de sesión; el servidor utiliza esa referencia para asociar solicitudes posteriores con el usuario autenticado. La contraseña no se guarda directamente en la cookie.
Explicación técnica paso a paso
authenticate comprueba las credenciales y login registra al usuario en la sesión. logout termina la sesión autenticada. El formulario de acceso utiliza POST y CSRF; las contraseñas deben tratarse con el sistema de hashing de Django, nunca guardarse como texto plano. Es recomendable cerrar sesión mediante POST.
Ejemplo práctico · Python / Django
Ejemplo complementario · Comandos / HTML
SessionMiddleware y AuthenticationMiddleware. En producción, usar HTTPS y revisar las opciones de seguridad de cookies.Proteger vistas con login_required
¿Qué aprenderás y por qué es importante?
Una página no queda protegida por ocultar su enlace en el menú. Un visitante podría escribir directamente su URL. El decorador login_required comprueba en el servidor si request.user está autenticado; si no lo está, redirige al acceso configurado. Esto permite proteger listados, formularios y operaciones de mantenimiento.
Explicación técnica paso a paso
El decorador se coloca sobre la función que atiende la ruta. Debe aplicarse a todas las vistas que requieren autenticación, no solamente al index. LOGIN_URL indica a dónde redirigir a usuarios anónimos. Tras iniciar sesión se puede recuperar el destino original, pero debe validarse antes de redirigir a una URL proporcionada por el usuario.
Ejemplo práctico · Python / Django
Ejemplo complementario · Comandos / HTML
login_required solo comprueba autenticación, no si el usuario tiene permiso para modificar o borrar registros. Para eso se requieren controles adicionales.Autorización por perfiles y permisos
¿Qué aprenderás y por qué es importante?
Un sistema puede tener usuarios autenticados con funciones diferentes. Por ejemplo, un administrador mantiene productos y un operador solo consulta el inventario. Django proporciona usuarios, grupos y permisos. Los grupos pueden representar perfiles organizacionales, mientras que los permisos permiten expresar acciones concretas. Esto es más seguro que confiar únicamente en el nombre de un perfil mostrado en la interfaz.
Explicación técnica paso a paso
La autenticación responde “¿quién eres?”; la autorización responde “¿puedes hacer esto?”. Para un ejemplo sencillo se puede asociar el usuario a un grupo y comprobarlo desde la vista. En proyectos más grandes conviene usar permisos de Django y asignarlos a grupos desde el panel de administración. La verificación debe hacerse en cada vista protegida.
Ejemplo práctico · Python / Django
Ejemplo complementario · Comandos / HTML
add, change, delete y view se crean normalmente para los modelos de Django.Administradores y Operadores, asignar permisos diferentes y verificar el acceso real a las rutas.Crear decoradores personalizados
¿Qué aprenderás y por qué es importante?
Cuando varias vistas necesitan la misma regla, repetir condiciones en cada función produce código duplicado y aumenta el riesgo de errores. Un decorador personalizado envuelve una vista, comprueba una condición antes de ejecutarla y permite o rechaza el acceso. Puede servir para comprobar grupos, estados de cuenta o reglas específicas del proyecto.
Explicación técnica paso a paso
Un decorador recibe una función y devuelve otra función que la envuelve. functools.wraps conserva metadatos de la vista. En este ejemplo se exige autenticación y pertenencia a un grupo; si no se cumple la regla se devuelve HTTP 403, que significa acceso prohibido. Es importante diferenciarlo de 401 o de una redirección al login.
Ejemplo práctico · Python / Django
Ejemplo complementario · Comandos / HTML
Administradores y comprobar tres escenarios de acceso.Ponte a prueba — Parte 2 (Seguridad)
Comprueba tu dominio de las lecciones 07 a 10 sobre authenticate, login, logout, @login_required, permisos y decoradores personalizados.


