Gestion des sessions
Principe de fonctionnement
Les sessions, enregistrées dans le fichier SESSION, permettent de contrôler le nombre de connexions simultanées à la base.
A la connexion d'un utilisateur à une base, un enregistrement est crée dans le fichier SESSION, comportant les informations de session, avec principalement le code utilisateur Gestan et le statut de la connexion : quand l'utilisateur se connecte, la session est déclarée ouverte, quand il se déconnecte, elle est déclarée fermée (via SESSION.IOPEN). L'ID de session est mémorisé dans la globale gIdSession.
Toutes les 30 secondes, le fichier SESSION est lu sur gIdSession.
- si la session est lue comme fermée, l'exécutable se termine
- si SESSION.DHHEARTBEAT est trop ancien, la session est mise à jour au statut fermé
- dans le cas contraire, le champ SESSION.DHHEARTBEAT est mis à jour avec la date-heure système, afin d'enregistrer que la session est “vivante” (donc qu'il ne faut par la mettre à jour au statut fermé).
Il est possible, via l'écran de gestion des sessions, de demander une déconnection de tous les users. Dans ce cas, toutes les sessions sont déclarées fermées, à l'exception de celle qui demande la déconnexion générale.
Mise en oeuvre
Connection d'un utilisateur
Lors d'une connexion à la base, juste après le login et mot de passe, renseignez la variable globale gCdUser avec le code utilisateur Gestan, puis appelez la fonction gf_USER_Connecte(“CONNECTER”).
Cette fonction, si les informations de licence sont correctes (via la classe cLicence), va vérifier que le nombre de connexions concurrentes n'est pas atteint
- s'il est atteint, proposer d'en tuer une
- s'il n'est pas atteint, ajoute un enregistrement SESSION au statut Ouvert.
Déconnection d'un utilisateur
Lors de la déconnection de l'utilisateur, appelez la fonction gf_USER_Connecte(“DECONNECTER”).
Cette fonction :
- met à jour la date-heure de déconnection du user
- enregistre que la session est déconnectée
📌 Autres articles “Spécifications”