Saltar al contenido

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:

  1. Laravel detecta que no hay sesión activa

  2. Busca la cookie remember_web_*

  3. Extrae el ID y token (y hash del password, aunque no siempre se usa)

  4. Busca el usuario en base de datos por ID

  5. Compara el token de la cookie con el remember_token de la BD

  6. Si 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:

  1. Haz login con "Recordarme" activado

  2. Ve a DevTools → Application → Cookies

  3. Elimina la cookie de sesión (normalmente tu_app_session)

  4. Deja intacta la cookie remember_web_*

  5. 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().

school Curso completo

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.

access_time 8 horas de contenido
layers 4 tecnologías en 1
update 100% actualizado
code Proyectos prácticos
Ver Curso Laravel 12 arrow_forward

star Incluido en cualquier suscripción

Rutas de aprendizaje