Cakephp aumentar el tiempo de session timeout

Problema, tus usuarios, los administradores o editores que tienen que hacer login a una sección de la web y después de un tiempo sin actividad, cakephp los desloguea automáticamente si la sesión no es esta refrescando. Esto es muy común y se hace por temas de seguridad. Pero digamos que hay secciones de la web o intranet donde se quiere que la session dure mucho más tiempo, a pesar de que el

cakephp puede almacenar las sessiones php en diferentes lugares.
Por defecto se guardan en el path que se indica desde php.ini definido en la directiva

session.save_path = "/var/lib/php/session"

/var/lib/php/session/ suele ser uno de los path por defecto donde se guardan las sesiones en el sistema.

Pues bien también hay una directiva que indica el tiempo de vida de la session definida también en el php.ini

session.gc_maxlifetime = 1440

Pero no es muy aconsejable cambiar esto cuando se tienen varias aplicaciones en un mismo servidor, de hecho si alguien tiene un servidor compartido ni podrá acceder al php.ini.

Pues bien, para alterar el tiempo de vida de la session en CakePHP lo que tenemos que hacer es modificar donde cake guarda las sessiones. Hay diferentes opciones. En el archivo config/core.php
Podemos setear cualquiera de las siguientes opciones

Configure::write('Session.save', 'php');
Configure::write('Session.save', 'cake');
Configure::write('Session.save', 'database');

La primera opción usará la configuración que viene definida en el php.ini y tampoco se podrá hacer mucho, salvo forzar algunos parámetros. Es la opcion que viene por defecto y lo que normalmente se utiliza.

La segunda opción guarda los archivos con las sesiones en app/tmp/sessions. Es con esta opción con la que podremos fácilmente aumentar o disminuir el tiempo de vida (TTL) de la session.

La última opcion guarda las sessiones en base de datos.

Para aumentar el tiempo de vida de la session utilizamos otro parámetro de configuración en cakephp

Configure::write('Session.timeout', '86400');

Donde especificamos que la sesión dure un día entero. Esto es aconsejable en intranet o partes de una web que no son accesibles a los usuarios o ataques. Para que administradores o editores puedan acceder a un panel de control hecho en cakephp y que su session dure más tiempo en caso de que estén inactivos.

De esta manera alteramos el modo en que se guardan las sessiones pero no tendremos que tocar nada en el php.ini y configuracion del lado del servidor.

Otra técnica que se puede hacer es guardar las sessiones en memcached. Pero eso lo explicaré mas adelante.

Una respuesta a “Cakephp aumentar el tiempo de session timeout”

  1. hola solo tengo una consulta sobre ACL necesito hacer un registro de usuarios pero tener multiple tabla de roles es decir que los administradores definan sus roles

Deja un comentario

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