Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v20 R7
Gestión de las sesiones web (heredado)

Gestión de las sesiones web (heredado)  


 

Esta página describe las sesiones web heredadas que están disponibles en bases 4D convertidas (ver ).

A partir de 4D v18 R6, se recomienda utilizar la implementación de sesiones web escalables. Puede habilitar sesiones escalables en sus aplicaciones convertidas seleccionando la opción apropiada en la configuración de la aplicación, la función  webServer.start( ) o a través del comando WEB SET OPTION.

Se puede encontrar documentación exhaustiva sobre las sesiones web escalables en Sesiones de usuario en developer.4d.com.

 ).

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 que creó 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.

Las sesiones web heredadas se habilitan en bases convertidas utilizando uno de los siguientes medios:

  • la opción Sesiones heredadas se selecciona en la página "Opciones (I)" de la Configuración de la estructura (configuración permanente):

     

  • la instrucción WEB SET OPTION (Web legacy session;1) se ejecuta.

Se recomienda activar las sesiones escalables tan pronto como sea posible.

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 Legacy Close Session 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 QR SET DESTINATION (ver el ejemplo a continuación).

Si es necesario, puede utilizar el comando WEB LEGACY 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 Legacy Close Session, 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 QR SET DESTINATION y  el Método base On Web Legacy Close Session

Este es el código del QR SET DESTINATION:

  // 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 Legacy Close Session:

  // 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 

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

 
PROPIEDADES 

Producto: 4D
Tema: Servidor Web

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Modificado: 4D v18 R6

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v20 R7)