Error en login de Preinscripcion 3.11

Hola Leonardo

  1. Agregué esas 3 líneas en la función construct quedando así la función:

function __construct()
{
session_name($this->get_session_name());
$secure_cookie = (kernel::proyecto()->get_ssl_alcance() == ruteador::SSL_ALCANCE_ALL);
session_set_cookie_params(0, $this->get_cookie_path(), $this->get_cookie_domain(), $secure_cookie, true);
session_start();
klog2(“session_name”, $this->get_session_name());
klog2(“cookie_path”, $this->get_cookie_path());
klog2(“cookie_domain”, $this->get_cookie_domain());
}

  1. En la función get_auth_provider, agregue solo la primer linea porque la segunda ya estaba, quedando asi la funcion:

protected function get_auth_provider(sesion $session)
{
$auth_type = $session->get_con_default(‘__kernel_auth’, null);
if ($auth_type == null && isset($_GET[‘auth’])) {
$auth_type = $_GET[‘auth’];
}
klog2(“auth_type”, $auth_type);
return $this->fuentes->instanciar_fuente($auth_type);
}

Ahora hacemos algunos intentos de loguin y luego te paso los logs?

Hola Javier, perfecto!!!

Deberías validar que en todos los logs de las diferentes peticiones no cambie el “session_name”, por su configuración todos los logs deberían decir:


--  session_name  --------------------------------------------------------------

siu_sess_preinscrip/imes311_alumno

--  cookie_path  ---------------------------------------------------------------

/preinscrip/imes311

--  cookie_domain  -------------------------------------------------------------

138.117.79.62

También agrega lo siguiente a los logs, en la función instanciar_persona de la clase vendor/siu/chulupi-framework/src/SIU/Chulupi/acceso/LoginManager.php:


	protected function instanciar_persona(sesion $session, AuthenticationProvider $auth = null)
	{
		$autenticado = $session->abierta();
		klog2("=== autenticado ===", $autenticado); // <==> Agregá esto
		
		if($autenticado = $session->abierta()){
			$id_persona = $session->get_id_persona();
			$persona = $this->get_clase_persona($id_persona);
			kernel::set_persona($persona);
		}else {
			$persona = $this->get_clase_persona(null);
			kernel::set_persona($persona);
		}
		
		klog2("=== persona ===", print_r($persona, true));// <==> y esto
		
		if($auth != null){
			$auth->evt_persona_instanciada($persona, $autenticado);
		}

		return $persona;
	}

saludos.
2

Hola Javier,

Encontré un post que puede llegar a servir: https://stackoverflow.com/questions/17242346/php-session-lost-after-redirect

¿vos podes pasarnos un phpinfo() de tu servidor para poder comparar tu configuración con la nuestra?

También te pediría que en la función __construct de la clase vendor/siu/chulupi-framework/src/SIU/Chulupi/nucleo/sesion.php agregues estos klog2:


    function __construct()
    {
		session_name($this->get_session_name());
		$secure_cookie = (kernel::proyecto()->get_ssl_alcance() == ruteador::SSL_ALCANCE_ALL);
		session_set_cookie_params(0, $this->get_cookie_path(), $this->get_cookie_domain(), $secure_cookie, true);
        session_start();
		
		klog2("=== session_id ===", session_id());
		klog2("=== session_name ===", session_name());
		klog2("=== session_save_path ===", session_save_path());
		
    }

saludos.
2

Hola Leonardo

Ésta era mi función antes de agregarle las 2 líneas que me pediste:


protected function instanciar_persona(sesion $session, AuthenticationProvider $auth = null)
        {
                if($autenticado = $session->abierta()){
                        $id_persona = $session->get_id_persona();
                        $persona = $this->get_clase_persona($id_persona);
                        kernel::set_persona($persona);
                }else {
                        $persona = $this->get_clase_persona(null);
                        kernel::set_persona($persona);
                }
                if($auth != null){
                        $auth->evt_persona_instanciada($persona, $autenticado);
                }
                return $persona;
        }

Como te darás cuenta también le faltaba la primer línea: $autenticado = $session->abierta();
Yo se la agregué igualmente. Vos sacaste ese código de la versión 3.11.0 de Preinscripcion? De ser así porque a mi función le faltaría esa línea si tengo la versión 3.11 instalada?

Hola Javier,

No, yo lo tengo igual que vos, esas lineas te decía que las agregues para poder loggear mas información.

No te olvides de pasarme el “phpinfo” para poder observar si hay algo extraño.

saludos.
2

Te paso la url para que lo veas vos mismo: http://138.117.79.62/preinscrip/imes311/

y adjunto los logs.


logs_alumno_alumno_imes.rar (4.75 MB)

Buen día Javier!

Estuve revisando y encontré una posible solución:

En el archivo de configuracion de php para apache2 (/etc/php/7.3/apache2/php.ini) hay una variable llamada sessions.auto_start. Si la misma está con un valor de 0, cambialo a 1, corré en la terminal “service apache2 reload” y luego “service apache2 restart”, e intentá loguearte devuelta.

Notificanos si esto soluciona tu problema.

Saludos!

20

Solucionado el problema del SIU Preinscripción, logre loguearme con un usuario. Ahora cuando entro al SIU Gestión me dice lo sgte:

Ya existe una sesión abierta, probablemente tenga activado session.auto_start = 1 en el php.ini

Pueden corroborarlo aquí: http://138.117.79.62/guarani/3.15/

Buen día! Como puedo solucionar éste problema?
Cuando el valor está en 0 tengo Siu Gestión pero no Siu Preinscripción y si el valor está en 1 tengo Siu Preinscripción pero no funciona el Siu Gestión

Hola

Teniendo en cuenta el aporte de Milton en las Respuestas #8 y #10 y en la respuesta a otro foro de un error similar en 3w, deberían chequear la versión de php y ver la posibilidad de hacer un downgrade (entendemos que debe ser a una versión anterior a 7.3.19) a ver si soluciona el problema. Mientras tanto estamos revisando la compatibilidad del framework con respecto a esta actualización de PHP

Saludos

Entonces los requisitos deberían decir mas específicos, no deberían decir:
PHP 7.3.x También se deben tener instaladas y activadas las extensiones php: curl, mbstring, pdo_pgsql, openssl, apc o apcu, gd2. Establecer el valor de la directiva de configuración ‘max_input_vars’ en 1200. Establecer el valor de ‘allow_url_fopen’ en ‘1’.

acá tiene que decir es necesaria la versión 7.3.el numero de versión con la que probaron y funciona y el comando especifico para ubuntu, debian, centos para instalar dicha versión especifica porque instalamos la ultima versión y después tenemos estos problemas que lleva días solucionar.

Como desinstalo la versión de php que tengo e instalo la necesaria y probada que funciona?

Buenas tardes!

Estuvimos analizando el problema en nuestro framework. No necesitan hacer un downgrade. Reemplacen la función “get_session_name” en vendor/siu/chulupi-framework/src/SIU/Chulupi/nucleo/sesion.php por la siguiente función:


/**
 * 
 * @see https://bugs.php.net/bug.php?id=79699
 */
protected function get_session_name()
{
	$alias = (is_null(kernel::proyecto()->get_alias()))? '' : kernel::proyecto()->get_alias();
	$postfix = $alias.'_'.kernel::proyecto()->get_bloque_acceso();
	
	$caracteres_no_permitidos = ['(', ')', '<', '>', '@', ',', ';', ':', '\\' ,'"', '/', '[', ']', '?', '=', '{', '}', '.', ' '];
	$postfix = trim(str_replace($caracteres_no_permitidos, "", $postfix));
	$session_name = "siu_sess_$postfix";
	kernel::log()->add_debug("=== session_name ===", $session_name);
	return $session_name;
}

Luego vuelvan a colocar la variable Session.auto_start a 0, como estaba, y por favor prueben estos cambios para avisarnos si se soluciona el problema

FUNCIONO!!! Mi problema estaba con Augestion 3.18 en producción.

Muchas gracias!!

Sigue siendo llamativo que en nuestro caso en desarrollo y testing funciona con la función original, quizas por el tema de manejo de cookies.

Saludos, Diego.

Hola Gabriel buen día!

Hice los cambios en la función que pasaste y luego hice service apache2 reload y service apache2 restart pero sigo con el problema en mi SIU Gestión con el mismo mensaje:
Ya existe una sesión abierta, probablemente tenga activado session.auto_start = 1 en el php.ini

Preinscripcion y Autogestion si me funcionan.

hay algún paso mas para solucionar ?

Buen día Javier.

Fijate que más abajo te aclaré que debías reestablecer la opcion “session.auto_start” del php.ini a 0, para que no sigas teniendo ese error. Verificalo y avisanos.

Saludos!

Ya tengo en funcionamiento el Siu Gestion 3.18, Autogestion 3.18 y Preinscripcion 3.11

El unico que no me esta funcionando es el perfil Admin de Preinscripcion: http://138.117.79.62/preinscrip_admin/imes311/

Error 404
Not Found
The requested URL was not found on this server.

Yo no cambie nada del archivo .conf que puede ser?
Si elimino el link simbólico y lo vuelvo a agregar el .conf?

Buenas tardes Javier!

Podrías restaurar los alias originales que nos mandaste al principio de la consulta, y volver a agregar el .conf.
Notificanos si esto soluciona el problema.

2

Hola, por el problema original ,de la pérdida de la sesión en el login después de actualizar PHP

Aplicamos un fix en todos los nodos, en las versiones

3w:
3.16.0
3.16.1
3.16.2
3.17.0
3.17.1
3.18.0
3.18.1

Preinscripción:
3.9.0
3.10.0
3.11.0
3.11.1

Deben actualizar (svn up) y ejecutar el comando composer install.
Cualquier duda consulten

Saludos

Buen día! Hoy tengo una Reunión por zoom con el personal administrativo para mostrarles el proceso de carga de notas porque esta funcionando así que no voy a tocar nada del sistema hoy por las dudas. En el transcurso de la semana hago lo que me dijeron y les aviso como me fue.
Saludos! Muchas gracias

Hola, estos son los parches:

Preinscripción 3.11.0: https://colab.siu.edu.ar/trac/guarani3/changeset/46641/
Preinscripción 3.11.1: https://colab.siu.edu.ar/trac/guarani3/changeset/46526/

Tal como decía Sergio, tenes que hacer svn up y luego composer install.

saludos.
2