Encriptación de Contraseñas en Symfony paso a paso
Clase 15 de 22 • Curso Práctico de Symfony
Resumen
¿Cómo podemos encriptar las contraseñas en nuestra aplicación?
Es esencial garantizar la seguridad de los usuarios en cualquier aplicación. Un paso crucial para lograrlo es encriptar las contraseñas. En este artículo, profundizaremos en cómo se puede lograr esto de manera efectiva utilizando el Factory en Symfony. El objetivo de este enfoque es asegurar que los datos ficticios generados para pruebas sean lo más realistas posible, replicando los escenarios del mundo laboral.
¿Cómo configuramos el hasher de contraseñas?
Para comenzar con la configuración, se recomienda seguir estos pasos detallados para integrar el hasher de contraseñas:
-
Importación de la clase necesaria: Dirígete al archivo UserFactory en tu proyecto y comienza importando las clases adecuadas. En nuestro caso, trabajaremos con Symfony y las siguientes importaciones:
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
-
Creación de una propiedad para el hasher: Declara una propiedad privada llamada
hasher
para darle un sentido más claro al código y para trabajar con la clase importada.private UserPasswordHasherInterface $hasher;
-
Asignación de la propiedad: Asegúrate de que esta propiedad se asigne adecuadamente, lo que se logra a través de inyección de dependencias.
$this->hasher = $hasher;
¿Cómo utilizamos el método de inicialización para la encriptación?
El método de inicialización permite agregar lógica adicional a la configuración básica. Sigamos este procedimiento para encriptar las contraseñas antes de crear usuarios falsos:
- Uso del método de inicialización: Dentro del método, utiliza el método
setPassword
para asegurar que las contraseñas se encripten correctamente:$user->setPassword( $this->hasher->hashPassword( $user, '123456789' // Esto se sustituirá por la contraseña original ) );
¿Cómo creamos usuarios con roles específicos?
Añadir roles a los usuarios durante la fase de seeding (inicialización de datos) es crucial para pruebas exhaustivas:
- Configuración de datos semillas: Modifica el archivo de configuración de datos semillas para incluir un usuario administrador y otro usuario estándar, ambos con contraseñas encriptadas.
// Crear usuario administrador $userAdmin = [ 'name' => 'admin', 'email' => 'admin@app.com', 'roles' => ['ROLE_ADMIN'], ]; // Crear usuario estándar $userStandard = [ 'name' => 'user', 'email' => 'user@app.com', 'roles' => ['ROLE_USER'], ];
¿Cómo verificamos la correcta ejecución de las configuraciones?
Una vez realizadas las configuraciones, es momento de ejecutar la creación de datos falsos y revisar su correcto funcionamiento:
-
Ejecución del comando de creación de datos:
php bin/console doctrine:fixtures:load
-
Verificación en la base de datos: Asegúrate de que las contraseñas estén encriptadas y que los usuarios con roles específicos han sido añadidos correctamente.
Integrar estos pasos en tu proyecto no solo aumenta la seguridad de los usuarios simulados, sino que también te prepara para un entorno de producción realista. Recuerda siempre seguir aprendiendo, practicando y aplicando nuevas técnicas en tus proyectos. ¡El éxito en cada línea de código es tuyo!