En esta entrada os voy a explicar cómo implementar la función remember me en Symfony 5, simple, rápido, sencillo y para toda la familia.
Algunos os preguntaréis » – Joder, es tan simple como generar una cookie y guardarlo ahí con la sesión no ?». Pues sí, pero Symfony 5 nos lo pone todavía más fácil y os lo voy a demostrar.
Lo primero que debemos hacer es ir a nuestro fichero security y añadir la siguiente línea justo en la parte que empieza el remember_me:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: true
lazy: true
provider: app_user_provider
guard:
authenticators:
- App\Security\AuthGuardAuthenticator
form_login:
login_path: login
check_path: login
default_target_path: main
logout:
path: app_logout
target: app_login
remember_me:
secret: '%kernel.secret%'
lifetime: 604800
path: /
Y ahora vamos a detallar que es cada uno de esos parámetros:
- secret: Concretamente es el string que se utiliza para cifrar nuestro contenido de una cookie. Esto por defecto utiliza el string APP_SECRET que tenemos en nuestro fichero raíz .env del proyecto.
- lifetime: El tiempo de vida de la cookie en segundos.
- path: El lugar en que se aplicará la cookie sessión, puede ser en la raíz de la aplicación o a una ruta específica como podría ser /admin.
El siguiente paso es definir nuestro checkbox tal que así dentro de nuestro form:
<input type="checkbox" id="remember_me" name="_remember_me" checked/>
<label for="remember_me">Keep me logged in</label>
Tan simple como eso, para hacer la prueba solamente tenemos que hacer login en la web y en el apartado de herramientas de desarrollador de vuestro navegador, sección de almacenamiento podremos ver una cookie como esta:
Y con esto tan simple, ya habremos terminado, aquí te dejo la información oficial de Symfony para que le pegues un vistazo. Como podrás ver, podrás forzar al usuario a volver a realizar un login al acceder a ciertos recursos, como puede ser información de carácter privado.
En esta anterior entrada también te dejo como crear un CRUD de usuario en Symfony 4.
¡Hasta la próxima!