Session
Les objets Session sont retournés par la commande Session
lorsque les sessions extensibles sont activées dans votre projet. 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.
Pour des informations détaillées sur l'implémentation de la session, veuillez consulter la section Sessions du serveur web.
Sommaire
.clearPrivileges() supprime tous les privilèges associés à la session |
.expirationDate : Text la date et l'heure d'expiration du cookie de session |
.hasPrivilege( privilege : Text ) : Boolean renvoie Vrai si le privilège est associé à la session, et Faux sinon |
.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 retourne True si la session est une session invité (c'est-à-dire qu'elle n'a pas de privilèges) |
.setPrivileges( privilege : Text ) .setPrivileges( privileges : Collection ) .setPrivileges( settings : Object ) associe à la session le(s) privilège(s) et/ou le(s) rôle(s) défini(s) dans le paramètre |
.storage : Object un objet partagé qui peut être utilisé pour stocker des informations disponibles pour toutes les requêtes du client web |
.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
La commande Session
renvoie l'objet Session
correspondant à la session web utilisateur extensible courante.
Cette commande fonctionne uniquement lorsque les sessions extensibles sont activées. Elle retourne Null lorsque ces sessions sont inactives ou lorsque les anciennes sessions sont utilisées.
Lorsque les sessions extensibles sont activées, l'objet Session
est disponible depuis n'importe quel process web dans les contextes suivants :
- Méthodes base
On Web Authentication
,On Web Connection
, etOn REST Authentication
, - Méthodes base
On Mobile App Authentication
etOn Mobile App Action
pour les requêtes mobiles, - Les fonctions Data Model Class ORDA appelées par des requêtes REST,
- 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
//méthode action_Session
Case of
:(Session#Null)
If(Session.hasPrivilege("WebAdmin")) //appel de la fonction hasPrivilege
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()
Historique
Release | Modifications |
---|---|
18 R6 | Ajout |
.clearPrivileges()
| Paramètres | Type | | Description | | ---------- | ---- |::| ------------------------------------------------------ | | | | | Ne requiert aucun paramètre|
|
Description
La fonction .clearPrivileges()
supprime tous les privilèges associés à la 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. Elle est automatiquement recalculée si la valeur de la propriété .idleTimeout
est modifiée.
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
La fonction .hasPrivilege()
renvoie Vrai si le privilège est associé à la session, et Faux sinon.
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 modifiée, 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())
// Une 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()
retourne True si la session est une session invité (c'est-à-dire qu'elle n'a pas de privilèges).
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
La fonction .setPrivileges()
associe à la session le(s) privilège(s) et/ou le(s) rôle(s) défini(s) dans le paramètre.
-
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
, elle est ignorée.
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
La propriété .storage
contient un objet partagé qui peut être utilisé pour stocker des informations disponibles pour toutes les requêtes du client web.
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
Storage
du serveur, la propriété.storage
est toujours "single" : l'ajout d'un objet partagé ou d'une collection partagée à.storage
ne crée pas de groupe partagé.
Cette propriété est elle-même en lecture seulement mais elle retourne un objet en lecture-écriture.
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.