En las aplicaciones 4D, existen cuatro tipos de sesiones: la sesión remota 4D, la sesión de procedimiento almacenado, la sesión móvil y la sesión Web.
El comando Session ya devuelve las sesiones Web o móviles. Esto le da acceso a una gran cantidad de información sobre la sesión y a un objeto compartido por todos los procesos de la sesión.
En 4D 20 R5, el comando Session se ha extendido a la conexión Cliente/Servidor y al procedimiento almacenado.
Sesión 4D
Tipo diferente
Las definiciones de una sesión de procedimiento almacenado o de una sesión remota son:
Sesión de procedimiento almacenados
Cuando se llama a un método con el comando Execute on server 4D crea un proceso «Stored procedure». Todos los procesos «Stored procedure» pertenecen a la misma sesión, que está dedicada a los procedimientos almacenados.
Sesión remota
Los métodos con la propiedad «Ejecutar en el servidor» se ejecutan en el proceso cliente gemelo en el servidor. Todos los procesos cliente gemelos se ejecutan en la misma sesión.
Clase de sesión
Para una sesión remota o una sesión de procedimiento almacenado, el comando Session devuelve un objeto 4D.Session que contiene las siguientes propiedades:
- id – Identificador único de la sesión
- info – Toda la información sobre la sesión
- storage – Un objeto compartido que puede utilizarse para almacenar información disponible para todos los procesos de la sesión remota
- userName – El nombre de usuario asociado a la sesión
Las mismas funciones de la sesión Web están disponibles para escribir código genérico. Pero no hacen nada y devuelven siempre el mismo valor. Le invitamos a consultar la documentación de la clase Session.
Ejemplo:
{ "id": "B022A91187EF46C6B4D58C2A9BDE3C91", "info":{ "tipo": "remoto", "userName": "Designer", "machineName": "John Computer", "systemUserName": "John Doe", "IPAddress": "localhost", "hostType": "mac", "creationDateTime": "2024-03-27T10:11:31Z", "state": "active", "ID": "B022A91187EF46C6B4D58C2A9BDE3C91", "persistentID": "24336199BADF4BFE945B109E565D1189" }, "storage": { "settings": { "texto": "test" } }, "userName": "Designer" }
Compartir datos entre procesos
Cuando se crea una nueva sesión, la propiedad «Session.storage» se instanciará con un objeto compartido vacío. A continuación, podrá almacenar los datos que desee compartir entre procesos de la misma sesión.
Use (Session.storage)
Session .storage.settings:=New shared object("property"; $value; "property2"; $value2)
End use
Casos de uso
Proceso de autenticación y verificación de usuarios
Cuando un cliente se conecta al servidor, se inicia un proceso de autenticación y verificación del usuario. Por ejemplo, puede consistir en introducir en la aplicación un código enviado por correo electrónico o SMS. A continuación, se añade la información del usuario al almacenamiento de la sesión, lo que permite al servidor identificar al usuario. De esta forma, el servidor 4D puede acceder a la información del usuario para todos los procesos del cliente, lo que permite escribir código personalizado según el rol del usuario (por ejemplo, gerente, RRHH, etc.).
Restringir datos
Con este nuevo tipo de sesión, puede restringir los datos mostrados al usuario conectado. Por ejemplo, en una aplicación de gestión de clientes, el comercial sólo tiene acceso a los datos de sus clientes. Toda la información sobre esta nueva función se explica en este blog.
Siguiente
No dude en unirse a nosotros en el Foro 4D si tiene alguna pregunta o desea compartir su experiencia o casos de uso.