4D v16.3

Gestión de las sesiones web

Inicio

 
4D v16.3
Gestión de las sesiones web

Gestión de las sesiones web  


 

 

El servidor web de 4D ofrece un mecanismo simple y completo de gestión de sesiones usuario. Este mecanismo automático permite a los clientes web reutilizar el mismo contexto (selecciones e instancias de variables) de una petición a otra.

Esto se hace a través de una cookie privada creada por 4D: "4DSID". En cada petición cliente web, 4D verifica la presencia y el valor de la cookie 4DSID:

  • Si la cookie tiene un valor, 4D trata de encontrar el contexto de origen de la cookie entre los contextos existentes,
    • Si el contexto se encuentra, se reutiliza para llamada, el método Compiler_Web no se ejecuta,
    • Si no se encuentra contexto, 4D crea uno nuevo,
  • Si la cookie no tiene un valor o si no se presenta (por vencimiento, por ejemplo),  4D crea un nuevo contexto.

El mecanismo de gestión de las sesiones debe activarse en su servidor web 4D para que pueda utilizarlo en su aplicación.

Por defecto, este mecanismo se activa en las bases de datos creadas con 4D v13 y versiones posteriores. Sin embargo, por razones de compatibilidad, se desactiva en bases de datos convertidas desde una versión anterior de 4D. Debe activarlo explícitamente para poder beneficiarse de esta nueva funcionalidad.

Hay dos formas de activar la gestión automática de sesiones:

  •  Utilizando la opción Gestión automática de sesiones en la página "Opciones (I)" de las Propiedades de la base:

    En este caso, la configuración es permanente; se guarda en el disco.
  • Utilizando la opción Web Keep session del comando  WEB SET OPTION. En este caso, la configuaración se aplica únicamente a la sesión y "anula" la configuración definida en la configuración de la base.

En ambos casos, la configuración es local a la máquina; de manera que puede ser diferente en el servidor web 4D y en los servidores web 4D remotos.

La vida útil de una cookie inactiva es de 8 horas (480 minutos) por defecto, esto se puede cambiar con el comando WEB SET OPTION. Puede establecer un tiempo de vida diferente para las cookies (opción Web Inactive session timeout) y para los procesos asociados a las sesiones en el servidor (opción Web Inactive process timeout): por ejemplo, es posible que desee que un "carrito de compras" permanezca válido durante 24 horas pero, con por razones de optimización, no desea mantener el proceso durante tanto tiempo. En este caso, se puede establecer una duración de vida del proceso de 4 horas, por ejemplo. Al final de este periodo, se llama el Método base On Web Close Process y se pueden almacenar las variables y las selecciones relacionadas con la sesión antes de matar el proceso. La próxima vez que se conecte el cliente web (hasta 24 horas después), la cookie se envía de vuelta al servidor y puede cargar la información de la sesión en el Método base On Web Connection (ver el ejemplo a continuación).

Si es necesario, puede utilizar el comando WEB CLOSE SESSION para forzar la expiración de la cookie, en cualquier momento y por lo tanto cerrar la sesión.

4D destruye automáticamente los contextos inactivos más antiguos cuando se alcanza el número máximo de contextos guardados  (este número es de 100 por defecto y se puede cambiar con el comando  WEB SET OPTION).
Cuando el contexto está a punto de ser destruido (cierre del proceso web asociado), se llama al Método base On Web Close Process , que le permite guardar las selecciones y las variables del contexto, a la espera de su utilización posterior. 

Ejemplo  

Este ejemplo muestra lo fácil que es administrar sesiones utilizando el Método base On Web Connection y  el Método base On Web Close Process

Este es el código del Método base On Web Connection:

  // On Web Connection (or On Web Authentication)
 C_TEXT(www_SessionID)
 If(www_SessionID=WEB Get Current Session ID)
  // Compiler_Web no se llama
  // Todas las variables y las selecciones ya existen
    ...
 Else
  // Compiler_Web se acaba de ejecutar.
  // Esta es una nueva sesión, ninguna variable o selección existe
  // Registre el ID de la nueva sesión
    www_SessionID:=WEB Get Current Session ID
 
  // Inicialización de la sesión
  // Definición de las selecciones
  // Recuperación del usuario seleccionado
    QUERY([Usuario];[Usuario]Login=www_Login)
    QUERY([prefs];[prefs]Login=www_Login)
 
  // Coordenadas del empleado
    QUERY([empleados];[empleados]Nombre=[usuario]nombre)
    QUERY([empresa];[empresa]Nombre=[usuario]empresa)
 
  // Definición de las variables
  // Lectura de las preferencias para este usuario
    SELECTION TO ARRAY([prefs]nombre;prefNames;[prefs]valores;prefValues)
    www_UserName:=[User]Name
    www_UserMail:=[User]mail
 
  // Sesión inicializada
 End if

Código del Método base On Web Close Process :

  // On Web Session Suspend
  // Después de un periodo de inactividad o en caso de ser necesario, 4D cierra la sesión
 C_TEXT(www_SessionID)
 www_SessionID:=""
  // Se guarda la información de la sesión
  // Guardamos las preferencias del usuario conectado previamente
 QUERY([prefs];[prefs]Login=www_Login) // conservado en la sesión
 ARRAY TO SELECTION(prefNames;[prefs]nombre;prefValues;[prefs]valores)
 
  // Importante: se mata el proceso
  // 4D borra las variables, selecciones, etc.

Como el mecanismo de gestión de sesiones está basado en la utilización de cookies, el servidor HTTP de 4D no puede mantener una sesión si el cliente web no acepta las cookies. En este caso, cada petición es tratada como una nueva conexión y el método Compiler_Web se ejecuta en cada conexión.

Puede verificar si el soporte para cookies con el comando WEB GET HTTP HEADER.

El servidor HTTP de 4D registra la IP que inicia una sesión. Si un cliente web en una dirección IP diferente intenta acceder a una sesión existente, se devuelve el error HTTP 400 al cliente.



Ver también 

Método base On Web Close Process
Método base On Web Close Process
WEB CLOSE SESSION
WEB Get Current Session ID
WEB GET SESSION EXPIRATION
WEB Get session process count

 
PROPIEDADES 

Producto: 4D
Tema: Servidor Web

 
HISTORIA 

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)