Seguro que has visto cientos de veces el checkbox "Recordarme" en formularios de login. Pero, ¿sabes realmente qué ocurre cuando el usuario lo marca? En este artículo vamos a destripar el sistema Remember Me de Laravel para entender exactamente cómo funciona.
Qué problema resuelve Remember Me
Por defecto, las sesiones en Laravel tienen una duración de 120 minutos (2 horas), configurable en config/session.php. Cuando la sesión expira, el usuario debe volver a introducir sus credenciales.
El sistema Remember Me soluciona esto creando una cookie persistente que permite re-autenticar al usuario automáticamente cuando su sesión ha expirado.
El flujo completo paso a paso
1. Login con Remember activado
Cuando llamamos a Auth::attempt() con el segundo parámetro en true, activamos el sistema:
<?php
Auth::attempt([
'email' => $request->email,
'password' => $request->password,
], remember: $request->boolean('remember'));2. Qué genera Laravel
Al activar remember, Laravel hace dos cosas:
En base de datos: genera un token aleatorio de 60 caracteres y lo guarda en la columna remember_token de la tabla users. Este token solo se crea si el usuario no tiene uno previo.
En el navegador: crea una cookie llamada remember_web_{hash} que contiene:
ID del usuario
Token
Hash del password actual
Esta cookie tiene una duración de 400 días por defecto (desde Laravel 9+, anteriormente eran 5 años).
3. Cuando la sesión expira
Aquí es donde ocurre la magia. Cuando un usuario con sesión expirada hace una petición:
Laravel detecta que no hay sesión activa
Busca la cookie
remember_web_*Extrae el ID y token (y hash del password, aunque no siempre se usa)
Busca el usuario en base de datos por ID
Compara el token de la cookie con el
remember_tokende la BDSi todo es correcto, re-autentica al usuario y regenera la sesión
Nota: la validación del hash del password solo ocurre si tienes activo el middleware AuthenticateSession.
4. Detectar si el usuario entró via Remember
Puedes saber si el usuario fue autenticado mediante la cookie remember:
<?php
if (Auth::viaRemember()) {
// El usuario fue autenticado automáticamente
// Útil para solicitar password en acciones sensibles
}Medidas de seguridad integradas
El sistema incluye varias protecciones:
Token único por usuario: al hacer login con remember, Laravel crea un token solo si el usuario no tiene uno. El token se regenera en cada logout y reset de password, invalidando cookies remember de otros dispositivos.
Hash del password en la cookie: la cookie incluye el hash del password actual del usuario. Sin embargo, esta verificación solo está activa si usas el middleware AuthenticateSession. Sin este middleware, Laravel solo valida el ID y el token.
Para activar la verificación completa, añade el middleware en bootstrap/app.php:
<?php
->withMiddleware(function (Middleware $middleware) {
$middleware->web(append: [
\Illuminate\Session\Middleware\AuthenticateSession::class,
]);
})Cookie encriptada: los datos se encriptan con AES usando tu APP_KEY antes de enviarse al navegador, protegiéndolos de lecturas o manipulaciones.
Cómo probar que funciona
La forma más sencilla es desde DevTools del navegador:
Haz login con "Recordarme" activado
Ve a DevTools → Application → Cookies
Elimina la cookie de sesión (normalmente
tu_app_session)Deja intacta la cookie
remember_web_*Recarga la página
Deberías seguir autenticado. Laravel habrá detectado la ausencia de sesión y te habrá re-autenticado usando la cookie remember.
Invalidar sesiones en otros dispositivos
Si necesitas cerrar sesión en todos los dispositivos del usuario:
<?php
Auth::logoutOtherDevices($currentPassword);Esto regenera el remember_token, invalidando todas las cookies remember existentes.
Consideraciones finales
El sistema Remember Me es una solución elegante que balancea usabilidad y seguridad. Sin embargo, para acciones sensibles como cambiar email, password o realizar pagos, es recomendable verificar que el usuario no haya entrado solo via remember usando Auth::viaRemember().
Curso Laravel 12
Completo 2026
El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.
star Incluido en cualquier suscripción