Aller au contenu principal
Version: 19

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 le(s) privilège(s) défini(s) dans le paramètre à la session
.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
ReleaseModifications
18 R6Ajout

Session : 4D.Session

ParamètresTypeDescription
Résultat4D.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, et On REST Authentication,
  • 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
ReleaseModifications
18 R6Ajout

.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
ReleaseModifications
18 R6Ajout

.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
ReleaseModifications
18 R6Ajout

.hasPrivilege( privilege : Text ) : Boolean

ParamètresTypeDescription
privilegeText<-Nom du privilège à vérifier
RésultatBoolean<-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"))
//Access is granted, do nothing
Else
//Display an authentication page

End if

.idleTimeout

Historique
ReleaseModifications
18 R6Ajout

.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())
// 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()

Historique
ReleaseModifications
18 R6Ajout

.isGuest() : Boolean

ParamètresTypeDescription
RésultatBoolean<-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())
//Do something for Guest user
End if

.setPrivileges()

Historique
ReleaseModifications
18 R6Ajout

.setPrivileges( privilege : Text )
.setPrivileges( privileges : Collection )
.setPrivileges( settings : Object )

ParamètresTypeDescription
privilegeText->Nom de privilège
privilegesCollection->Collection de noms de privilèges
settingsObject->Objet contenant une propriété "privileges" (texte ou collection)

Description

La fonction .setPrivileges() associe le(s) privilège(s) défini(s) dans le paramètre à la 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éTypeDescription
privilegesText ou Collection
  • Chaîne contenant un nom de privilège, ou
  • Collection de chaînes contenant des noms de privilèges
  • userNameTextNom d'utilisateur à associer à la session (optionnel)

    Si la propriété privileges contient un nom de privilège invalide, il est ignoré.

    Dans l'implémentation actuelle, seul le privilège "WebAdmin" est disponible.

    Par défaut lorsqu'aucun privilège 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
    ReleaseModifications
    18 R6Ajout

    .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
    ReleaseModifications
    18 R6Ajout

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