Sesión
Session objects are returned by the Session
command when scalable sessions are enabled in your project. The Session object is automatically created and maintained by the 4D web server to control the session of a web client (e.g. a browser). This object provides the web developer with an interface to the user session, allowing to manage privileges, store contextual data, share information between processes, and launch session-related preemptive processes.
For detailed information about the session implementation, please refer to the web server Sessions section.
Resumen
.clearPrivileges() elimina todos los privilegios asociados a la sesión |
.expirationDate : Text la fecha y hora de expiración de la cookie de sesión |
.hasPrivilege( privilege : Text ) : Boolean devuelve True si el privilegio está asociado a la sesión, y False en caso contrario |
.idleTimeout : Integer el tiempo de inactividad de la sesión (en minutos), después del cual la sesión es cerrada automáticamente por 4D |
.isGuest() : Boolean devuelve True si la sesión es una sesión Guest (es decir, no tiene privilegios) |
.setPrivileges( privilege : Text ) .setPrivileges( privileges : Collection ) .setPrivileges( settings : Object ) asocia los privilegios definidos en el parámetro a la sesión |
.storage : Object un objeto compartido que puede ser utilizado para almacenar información disponible para todas las peticiones del cliente web |
.userName : Text el nombre de usuario asociado a la sesión |
Sesión
Histórico
Versión | Modificaciones |
---|---|
v18 R6 | Añadidos |
Session : 4D.Session
Parámetros | Tipo | Descripción | |
---|---|---|---|
Resultado | 4D.Session | <- | Objeto Session |
Descripción
El comando Session
devuelve el objeto Session
correspondiente a la sesión web actual del usuario escalable.
Este comando sólo funciona cuando están activadas las sesiones escalables. Devuelve Null cuando las sesiones están deshabilitadas o cuando se utilizan sesiones heredadas.
Cuando se habilitan las sesiones escalables, el objeto Session
está disponible desde cualquier proceso web en los siguientes contextos:
On Web Authentication
,On Web Connection
, andOn REST Authentication
database methods,- ORDA Data Model Class functions called with REST requests,
- code processed through 4D tags in semi-dynamic pages (4DTEXT, 4DHTML, 4DEVAL, 4DSCRIPT/, 4DCODE)
- project methods with the "Available through 4D tags and URLs (4DACTION...)" attribute and called through 4DACTION/ urls.
Ejemplo
Ha definido el método action_Session
con el atributo "Available through 4D tags and URLs". Se llama al método introduciendo la siguiente URL en el navegador:
IP:port/4DACTION/action_Session
//action_Session method
Case of
:(Session#Null)
If(Session.hasPrivilege("WebAdmin")) //calling the hasPrivilege function
WEB SEND TEXT("4DACTION --> Session is WebAdmin")
Else
WEB SEND TEXT("4DACTION --> Session is not WebAdmin")
End if
Else
WEB SEND TEXT("4DACTION --> Sesion is null")
End case
.clearPrivileges()
Histórico
Versión | Modificaciones |
---|---|
v18 R6 | Añadidos |
.clearPrivileges() | Parámetros | Tipo | | Descripción | | ---------- | ---- |::| ---------------------------- | | | | | No requiere ningún parámetro |
Descripción
La función .clearPrivileges()
elimina todos los privilegios asociados a la sesión. Como resultado, la sesión se convierte automáticamente en una sesión de invitado.
Ejemplo
//Invalidate a session
var $isGuest : Boolean
Session.clearPrivileges()
$isGuest:=Session.isGuest() //$isGuest is True
.expirationDate
Histórico
Versión | Modificaciones |
---|---|
v18 R6 | Añadidos |
.expirationDate : Text
Descripción
La propiedad .expirationDate
contiene la fecha y hora de expiración de la cookie de sesión. El valor se expresa como texto en el formato ISO 8601: YYYY-MM-DDTHH:MM:SS.mmmZ
.
Esta propiedad es de sólo lectura. Se vuelve a calcular automáticamente si se modifica el valor de la propiedad .idleTimeout
.
Ejemplo
var $expiration : Text
$expiration:=Session.expirationDate //eg "2021-11-05T17:10:42Z"
.hasPrivilege()
Histórico
Versión | Modificaciones |
---|---|
v18 R6 | Añadidos |
.hasPrivilege( privilege : Text ) : Boolean
Parámetros | Tipo | Descripción | |
---|---|---|---|
privilege | Text | <- | Nombre del privilegio a verificar |
Resultado | Boolean | <- | True si la sesión tiene privilege, False en caso contrario |
Descripción
La función .hasPrivilege()
devuelve True si el privilegio está asociado a la sesión, y False en caso contrario.
Ejemplo
Quiere comprobar si el privilegio "WebAdmin" está asociado a la sesión:
If (Session.hasPrivilege("WebAdmin"))
//Access is granted, do nothing
Else
//Display an authentication page
End if
.idleTimeout
Histórico
Versión | Modificaciones |
---|---|
v18 R6 | Añadidos |
.idleTimeout : Integer
Descripción
La propiedad .idleTimeout
contiene el tiempo de inactividad de la sesión (en minutos), después del cual la sesión es cerrada automáticamente por 4D.
Si no se define esta propiedad, el valor por defecto es 60 (1h).
Cuando se define esta propiedad, la propiedad .expirationDate
se actualiza en consecuencia.
The value cannot be less than 60: if a lower value is set, the timeout is raised up to 60.
Esta propiedad es de sólo escritura.
Ejemplo
If (Session.isGuest())
// A Guest session will close after 60 minutes of inactivity
Session.idleTimeout:=60
Else
// Other sessions will close after 120 minutes of inactivity
Session.idleTimeout:=120
End if
.isGuest()
Histórico
Versión | Modificaciones |
---|---|
v18 R6 | Añadidos |
.isGuest() : Boolean
Parámetros | Tipo | Descripción | |
---|---|---|---|
Resultado | Boolean | <- | True si la sesión es una sesión Guest, False en caso contrario |
Descripción
La función .isGuest()
devuelve True si la sesión es una sesión Guest (es decir, no tiene privilegios).
Ejemplo
En el método base On Web Connection
:
If (Session.isGuest())
//Do something for Guest user
End if
.setPrivileges()
Histórico
Versión | Modificaciones |
---|---|
v18 R6 | Añadidos |
.setPrivileges( privilege : Text )
.setPrivileges( privileges : Collection )
.setPrivileges( settings : Object )
Parámetros | Tipo | Descripción | |
---|---|---|---|
privilege | Text | -> | Nombre del privilegio |
privileges | Collection | -> | Colección de nombres de privilegios |
parámetros | Object | -> | Objeto con una propiedad "privilegios" (cadena o colección) |
Descripción
La función .setPrivileges()
asocia los privilegios definidos en el parámetro a la sesión.
In the privilege parameter, pass a string containing a privilege name (or several comma-separated privilege names).
In the privileges parameter, pass a collection of strings containing privilege names.
In the settings parameter, pass an object containing the following properties:
Propiedad | Tipo | Descripción |
---|---|---|
privileges | Text o Collection | |
userName | Texto | Nombre de usuario para asociar a la sesión (opcional) |
Si la propiedad privileges
contiene un nombre de privilegio no válido, se ignora.
In the current implementation, only the "WebAdmin" privilege is available.
Por defecto, cuando no se asocia ningún privilegio a la sesión, ésta es una sesión invitado.
La propiedad userName
está disponible a nivel de objeto de sesión (sólo lectura).
Ejemplo
En un método de autenticación personalizado, se establece el privilegio "WebAdmin" para el usuario:
var $userOK : Boolean
... //Authenticate the user
If ($userOK) //The user has been approved
var $info : Object
$info:=New object()
$info.privileges:=New collection("WebAdmin")
Session.setPrivileges($info)
End if
.storage
Histórico
Versión | Modificaciones |
---|---|
v18 R6 | Añadidos |
.storage : Object
Descripción
La propiedad .storage
contiene un objeto compartido que puede ser utilizado para almacenar información disponible para todas las peticiones del cliente web.
Cuando se crea un objeto Session
, la propiedad .storage
está vacía. Al ser un objeto compartido, esta propiedad estará disponible en el objeto Storage
del servidor.
Al igual que el objeto
Storage
del servidor, la propiedad.storage
es siempre "única": añadir un objeto compartido o una colección compartida a.storage
no crea un grupo compartido.
Esta propiedad es sólo lectura en sí misma pero devuelve un objeto de lectura-escritura.
Ejemplo
Se desea almacenar la IP del cliente en la propiedad .storage
. Puede escribir en el método de base de datos On Web Authentication
:
If (Session.storage.clientIP=Null) //first access
Use (Session.storage)
Session.storage.clientIP:=New shared object("value"; $clientIP)
End use
End if
.userName
Histórico
Versión | Modificaciones |
---|---|
v18 R6 | Añadidos |
.userName : Text
Descripción
La propiedad .userName
contiene el nombre de usuario asociado a la sesión. Puede utilizarlo para identificar al usuario dentro de su código.
Esta propiedad es una cadena vacía por defecto. Se puede establecer mediante la propiedad privileges
de la función setPrivileges()
.
Esta propiedad esde sólo lectura.