sistema de autentificacion - ManuelJDonoso/Proyecto_daw GitHub Wiki
Sistema de Autenticación
Este documento detalla los mecanismos de autenticación en la aplicación Crónicas de Mérida, cubriendo el inicio de sesión de usuarios, la creación de cuentas y los flujos de restablecimiento de contraseñas. Para información sobre los permisos basados en roles después de la autenticación, consulta la sección Control de Acceso Basado en Roles.
Descripción General
El sistema de autenticación maneja tres procesos principales:
- Inicio de sesión de usuarios con nombre de usuario y contraseña.
- Creación de cuentas con validación de formularios.
- Recuperación de contraseñas mediante token enviado por correo electrónico.
Estos procesos trabajan conjuntamente para asegurar el acceso a la aplicación mientras proporcionan opciones de gestión de cuentas amigables para el usuario.
Proceso de Inicio de Sesión
El formulario de inicio de sesión proporciona el punto de entrada para que los usuarios existentes se autentiquen y accedan a la aplicación.
Interfaz del Formulario de Inicio de Sesión
La interfaz de inicio de sesión incluye:
- Campo de entrada para el nombre de usuario.
- Campo de entrada para la contraseña.
- Botón de envío.
- Enlaces para recuperación de contraseña y creación de cuenta.
El formulario de inicio de sesión realiza una solicitud POST al controlador de inicio de sesión con los siguientes parámetros:
-
usuario
: Entrada del nombre de usuario. -
pass
: Entrada de la contraseña.Acción del formulario: ./controllers/login.php Método: POST
Creación de Cuenta
Los nuevos usuarios pueden crear cuentas a través del formulario de creación de cuenta. La validación del lado del cliente garantiza la integridad de los datos antes del envío.
Validación de Creación de Cuenta
El formulario de creación de cuenta implementa validación en JavaScript que:
- Verifica que todos los campos estén completos.
- Confirma que las contraseñas coincidan.
- Asegura que se acepten los términos y condiciones.
El script de validación evita el envío del formulario si alguna de estas condiciones falla, proporcionando mensajes de error apropiados para guiar al usuario.
Sistema de Recuperación de Contraseña
El flujo de recuperación de contraseña proporciona un método seguro para que los usuarios restablezcan su contraseña cuando la olvidan.
Flujo de Recuperación de Contraseña
- El usuario accede al formulario de recuperación de contraseña.
- El usuario ingresa su dirección de correo electrónico.
- El sistema verifica que el correo electrónico exista en la base de datos.
- Si es válido, se genera un token único y se almacena con un tiempo de expiración.
El proceso de recuperación de contraseña genera un token seguro utilizando la función random_bytes()
de PHP, convertido a hexadecimal. Este token se almacena en el campo reset_token
de la tabla usuarios
, junto con una marca de tiempo de expiración en el campo token_expiracion
.
Finalización del Restablecimiento de Contraseña
- El usuario hace clic en el enlace del correo electrónico de recuperación, que contiene el token de restablecimiento.
- El sistema valida el token y verifica su expiración.
- Si es válido, se presenta al usuario un formulario para ingresar una nueva contraseña.
- Después del envío, la contraseña se actualiza y el token se elimina.
El formulario de restablecimiento de contraseña verifica si el token es válido buscando un usuario con un token coincidente que no haya expirado.
Consideraciones de Seguridad
El sistema de autenticación implementa varias prácticas recomendadas de seguridad:
- Restablecimiento de contraseña basado en tokens: Utiliza tokens criptográficamente seguros para los restablecimientos de contraseña.
- Expiración programada: Los tokens de restablecimiento expiran después de un período definido para evitar su uso indebido.
- Validación del lado del cliente: Mejora la experiencia del usuario y reduce las solicitudes innecesarias al servidor.
- Validación del lado del servidor: Garantiza la integridad de los datos y la seguridad en el servidor.