Cómo aumentar la duración de las sesiones en Laravel

Laravel

En este tutorial vamos a ver cómo puede incrementar el tiempo que duran las sesiones en Laravel, que por defecto es de solamente dos horas. Esto hará que por ejemplo, tus usuarios tengan que hacer login en la aplicación tras dos horas de inactividad. Esta pequeña guía funcionará con cualquier versión de Laravel a partir de la versión 5.

Comenzaremos diciendo que en Laravel no será posible, ni tampoco recomendable, establecer una duración infinita para las sesiones. Sin embargo, podremos establecer una duración en minutos para las mismas.

Para aumentar el tiempo que duran las sesiones en Laravel tendrás que seguir estos pasos:

  1. Edita el archivo .env que encontrarás en el directorio raíz de Laravel, ya sea desde algún editor como VS Code o desde la terminal de comandos. Este archivo es el archivo de configuración de Laravel.
  2. En el archivo .env verás diversas opciones de configuración y entre ellas podrás encontrar la opción SESSION_LIFETIME, que por defecto suele tener un valor de 2880 minutos, que son dos horas. Se trata de un tiempo bastante reducido. Debes asignar a esta opción el número de minutos que quieres que duren las sesiones de tu aplicación. Por ejemplo, si quisieses establecer una duración de un año para las sesiones, tendrías que configurar la duración con un valor de 525600 minutos. Si quisieses establecer más o menos un mes, usarías un valor de 43800 minutos. En el siguiente ejemplo, estableceremos que las sesiones duren un año:
    SESSION_LIFETIME=525600
  3. Una vez hayas editado la opción, guarda el archivo y con esto ya habríamos terminado. Sin embargo, en caso de que la configuración de Laravel esté almacenada en caché, tendrás que refrescarla desde la terminal de comandos ejecutando el comando que ves a continuación:
    php artisan config:clear

    El comando anterior hará que las opciones de configuración se refresquen, de modo que Laravel las lea desde el archivo .env. Sin embargo, es recomendable almacenarlas en caché para una mayor eficiencia. Puedes hacerlo ejecutando el siguiente comando:

    php artisan config:cache
  4. Y ahora sí habremos terminado. Accede a tu aplicación, espera dos horas y verás que las sesiones todavía seguirán vigentes.

Tras ejecutar estos pasos, se asignará el valor que hayas establecido a la configuración de Laravel. Esto es algo que se ocurre en el archivo config/session.php, en donde podrás encontrar el siguiente valor en el array de configuración:

'lifetime' => env('SESSION_LIFETIME', 120),

En archivo .env no se suele incluir en el repositorio del proyecto, ya que se entiende que cada entorno tendrá su propia configuración. Si quisieses configurar un tiempo de sesión para todos los entornos, tendrías que cambiar el valor anterior siguiendo estos pasos:

  1. Edita el archivo config/session.php y establece el valor de la opción lifetime. Si quieres que el valor del archivo .env tenga prioridad, asigna como valor la función env, cuyo primer parámetro será el nombre de la opción a leer del archivo .env y cuyo segundo valor será el valor que se asignará por defecto en caso de que la opción de esté presente en el archivo .env. Así para que las sesiones duren un año por defecto:
    'lifetime' => env('SESSION_LIFETIME', 525600),

    En caso de que quisieras forzar un valor desde este archivo, algo que es poco recomendable, basta con que asignes el tiempo que quieres que dure la sesión en minutos directamente:

    'lifetime' => 525600,
  2. Tras editar el archivo, guárdalo y refresca la configuración de Laravel mediante el siguiente comando:
    php artisan config:clear

    Finalmente puedes almacenar en caché la configuración de Laravel ejecutando el comando que ves a continuación:

    php artisan config:cache
  3. Y esto ha sido todo.

Es importante que recuerdes refrescar o vaciar la caché, ya que resulta muy común olvidarse de ello, especialmente cuando no se tiene demasiada experiencia con Laravel. Puedes encontrar más información acerca de cómo configurar Laravel en su documentación oficial.

Espero que os haya resultado útil.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”