Session
Session objects are returned by the Session command when scalable sessions are enabled in your project. L'objet Session est automatiquement créé et maintenu par le serveur web 4D pour contrôler la session d'un client web (par exemple, un navigateur). Cet objet fournit au développeur web une interface avec la session de l'utilisateur, permettant de gérer les privilèges, de stocker des données contextuelles, de partager des informations entre les process et de lancer des processus préemptifs liés à la session.
For detailed information about the session implementation, please refer to the web server Sessions section.
Sommaire
| .clearPrivileges() removes all the privileges associated to the session |
| .expirationDate : Text la date et l'heure d'expiration du cookie de session |
| .hasPrivilege( privilege : Text ) : Boolean returns True if the privilege is associated to the session, and False otherwise |
| .idleTimeout : Integer le délai maximal d'inactivité de session (en minutes), au-delà duquel la session est automatiquement fermée par 4D |
| .isGuest() : Boolean renvoie True si la session est une session Guest (c'est-à-dire qu'elle n'a aucun privilège) |
| .setPrivileges( privilege : Text ) .setPrivileges( privileges : Collection ) .setPrivileges( settings : Object ) associates the privilege(s) and/or role(s) defined in the parameter to the session |
| .storage : Object a shared object that can be used to store information available to all requests of the web client |
| .userName : Text le nom d'utilisateur associé à la session |
Session
Historique
| Release | Modifications |
|---|---|
| 18 R6 | Ajout |
Session : 4D.Session
| Paramètres | Type | Description | |
|---|---|---|---|
| Résultat | 4D.Session | <- | Objet session |
Description
The Session command returns the Session object corresponding to the current scalable user web session.
This command only works when scalable sessions are enabled. It returns Null when sessions are disabled or when legacy sessions are used.
When scalable sessions are enabled, the Session object is available from any web processes in the following contexts:
- Méthodes base
On Web Authentication,On Web Connection, etOn REST Authentication, - méthodes base
On Mobile App AuthenticationetOn Mobile App Actionpour les requêtes mobiles, - ORDA Data Model Class functions called with REST requests,
- code traité par les balises 4D dans les pages semi-dynamiques (4DTEXT, 4DHTML, 4DEVAL, 4DSCRIPT/, 4DCODE)
- les méthodes projet avec l'attribut "Available through 4D tags and URLs (4DACTION...)" et appelées via les urls 4DACTION/.
Exemple
Vous avez défini la méthode action_Session ayant l'attribut "Disponible via Balises HTML et URLs 4D". Vous appelez la méthode en saisissant l'URL suivant dans votre navigateur :
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 --> session is null")
End case
.clearPrivileges()
Historique
| Release | Modifications |
|---|---|
| 18 R6 | Ajout |
.clearPrivileges()
| Paramètres | Type | Description | |
|---|---|---|---|
| Ne requiert aucun paramètre |
Description
The .clearPrivileges() function removes all the privileges associated to the session. En résultat, la session devient automatiquement une session Guest.
Exemple
//Invalider une session
var $isGuest : Boolean
Session.clearPrivileges()
$isGuest:=Session.isGuest() //$isGuest est mis à True
.expirationDate
Historique
| Release | Modifications |
|---|---|
| 18 R6 | Ajout |
.expirationDate : Text
Description
La propriété .expirationDate contient la date et l'heure d'expiration du cookie de session. La valeur est exprimée sous forme de texte au format ISO 8601 : YYYY-MM-DDTHH:MM:SS.mmmZ.
Cette propriété est en lecture seule. Lorsqu'un objet Session est créé, la propriété .storage est vide.
Exemple
var $expiration : Text
$expiration:=Session.expirationDate //ex : "2021-11-05T17:10:42Z"
.hasPrivilege()
Historique
| Release | Modifications |
|---|---|
| 18 R6 | Ajout |
.hasPrivilege( privilege : Text ) : Boolean
| Paramètres | Type | Description | |
|---|---|---|---|
| privilege | Text | <- | Nom du privilège à vérifier |
| Résultat | Boolean | <- | Vrai si la session dispose du privilege, sinon Faux |
Description
The .hasPrivilege() function returns True if the privilege is associated to the session, and False otherwise.
Exemple
Vous voulez vérifier si le privilège "WebAdmin" est associé à la session :
If (Session.hasPrivilege("WebAdmin"))
//Accès accordé, ne rien faire
Else
//Afficher une page d'authentification
End if
.idleTimeout
Historique
| Release | Modifications |
|---|---|
| 18 R6 | Ajout |
.idleTimeout : Integer
Description
La propriété .idleTimeout contient le délai maximal d'inactivité de session (en minutes), au-delà duquel la session est automatiquement fermée par 4D.
Si cette propriété n'est pas définie, sa valeur par défaut est 60 (1h).
Lorsque cette propriété est définie, la propriété .expirationDate est mise à jour en conséquence.
La valeur ne peut pas être < 60 ; si une valeur inférieure est définie, le timeout est élevé à 60.
Cette propriété est en lecture-écriture.
Exemple
If (Session.isGuest())
// La session Guest se ferme après 60 minutes d'inactivité
Session.idleTimeout:=60
Else
// Les autres sessions se ferment après 120 minutes d'inactivité
Session.idleTimeout:=120
End if
.isGuest()
Historique
| Release | Modifications |
|---|---|
| 18 R6 | Ajout |
.isGuest() : Boolean
| Paramètres | Type | Description | |
|---|---|---|---|
| Résultat | Boolean | <- | Vrai s'il s'agit d'une session Guest, sinon Faux |
Description
La fonction .isGuest() renvoie True si la session est une session Guest (c'est-à-dire qu'elle n'a aucun privilège).
Exemple
Dans la méthode base On Web Connection :
If (Session.isGuest())
//Faire quelque chose pour l'utilisateur invité
End if
.setPrivileges()
Historique
| Release | Modifications |
|---|---|
| 19 R8 | Prise en charge de la propriété "roles" dans settings |
| 18 R6 | Ajout |
.setPrivileges( privilege : Text )
.setPrivileges( privileges : Collection )
.setPrivileges( settings : Object )
| Paramètres | Type | Description | |
|---|---|---|---|
| privilege | Text | -> | Nom de privilège |
| privileges | Collection | -> | Collection de noms de privilèges |
| settings | Object | -> | Objet contenant une propriété "privileges" (texte ou collection) |
Description
The .setPrivileges() function associates the privilege(s) and/or role(s) defined in the parameter to the session.
-
Dans le paramètre privilege, passez une chaîne contenant un nom de privilège (ou plusieurs noms de privilèges séparés par des virgules).
-
Dans le paramètre privileges, passez une collection de chaînes contenant des noms de privilèges.
-
Dans le paramètre settings, passez un objet contenant les propriétés suivantes :
| Propriété | Type | Description |
|---|---|---|
| privileges | Text ou Collection | |
| roles | Text ou Collection | |
| userName | Text | Nom d'utilisateur à associer à la session (optionnel) |
Les privilèges et les rôles sont définis dans le fichier roles.json du projet. Pour plus d'informations, veuillez vous reporter à la section Privileges.
Si la propriété privileges ou roles contient un nom qui n'est pas déclaré dans le fichier roles.json, il est ignoré.
Par défaut lorsqu'aucun privilège ou rôle n'est associé à la session, la session est une session Guest.
La propriété userName est accessible au niveau de l'objet session (lecture seulement).
Exemple
Dans une méthode d'authentification personnalisée, vous assignez le privilège "WebAdmin" à l'utilisateur :
var $userOK : Boolean
... //Authentifier l'utilisateur
If ($userOK) //L'utilisateur a été approuvé
var $info : Object
$info:=New object()
$info.privileges:=New collection("WebAdmin")
Session.setPrivileges($info)
End if
.storage
Historique
| Release | Modifications |
|---|---|
| 18 R6 | Ajout |
.storage : Object
Description
The .storage property contains a shared object that can be used to store information available to all requests of the web client.
Lorsqu'un objet Session est créé, la propriété .storage est vide. Puisqu'il s'agit d'un objet partagé, cette propriété sera disponible dans l'objet Storage du serveur.
Tout comme l'objet
Storagedu serveur, la propriété.storageest toujours "single" : l'ajout d'un objet partagé ou d'une collection partagée à.storagene crée pas de groupe partagé.
Cette propriété est en lecture seule.
Exemple
Vous voulez stocker l'adresse IP du client dans la propriété .storage. Vous pouvez écrire dans la méthode base 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
Historique
| Release | Modifications |
|---|---|
| 18 R6 | Ajout |
.userName : Text
Description
La propriété .userName contient le nom d'utilisateur associé à la session. Vous pouvez vous en servir pour identifier l'utilisateur dans votre code.
Cette propriété est une chaîne vide par défaut. Elle peut être définie via la propriété privileges de la fonction setPrivileges().
Cette propriété est en lecture seule.