Sessions client JavaScript

De RAD Studio
Aller à : navigation, rechercher

Remonter à DataSnap REST


Les clients JavaScript REST pour DataSnap obtiennent un ID de session après l'invocation de leur première méthode serveur, à condition que l'invocation ait passé l'authentification utilisateur. Si l'authentification est passée, mais pas l'autorisation, un ID de session sera toujours obtenu.

L'ID de session est stocké dans une variable appelée $$SessionID$$, initialement définie dans le fichier ServerFunctionExecutor.js.

Perte de la session

Quand la session est perdue, le client efface la valeur de $$SessionID$$. L'appel suivant pour l'invocation d'une méthode serveur créera une nouvelle session.

Expiration

La session peut expirer après une durée spécifique, telle que définie par le serveur. La valeur par défaut est de 20 minutes. Quand le serveur a passé au client son ID de session, il passe aussi l'heure à laquelle la session expirera. Ceci est utilisé sur le client pour savoir quand oublier l'ID de session, évitant ainsi (ou au moins réduisant les chances) de passer un ID de session au serveur pour une session expirée, ce qui pourrait provoquer l'échec de l'invocation avec le message approprié indiquant que la session a expiré. L'expiration est basée sur l'inactivité. Ainsi, à chaque fois que vous invoquez une méthode serveur, votre session est renouvelée.

Terminaison par l'utilisateur

Vous pouvez fermer manuellement la session depuis le code client en appelant la fonction closeSession sur une instance de ServerFunctionExecutor. Vous pouvez obtenir l'accès à une instance de l'exécuteur depuis une instance de classe proxy en appelant [Proxy].executor. Si une instance de ClientChannel est disponible, une fonction closeSession peut aussi être utilisée.

Administration

Le serveur peut choisir à tout moment de terminer une session. Si le code client essaie ensuite d'utiliser l'ID de session pour invoquer quelque chose sur le serveur, une réponse JSON indiquant que la session a expiré sera renvoyée.

Quitter la page

Par défaut, l'ID de session n'est pas stocké dans un cookie. Par conséquent, si vous actualisez la page, la laissez puis y revenez, ou naviguez entre les pages d'une application multipage, une nouvelle session sera alors créée et l'ancienne session restera en suspens sur le serveur jusqu'à son expiration.

Conservation de la session

Pour mémoriser l'ID de session entre les chargements de pages, vous devez activer le cookie de session. Pour ce faire, appelez par exemple :


initSessionData(true, "chat_");

Ce code doit être appelé au premier chargement d'une page, après l'inclusion du fichier ServerFunctionExecutor.js. Il stockera l'ID de session dans un cookie, qui est défini pour expirer en même temps que l'expiration de la session sur le serveur. Le deuxième paramètre est une chaîne qui sera préfixée à l'ID du cookie général (dssessionid). Cela signifie qu'en cas d'appel de initSessionData(true, "chat_"), les cookies sont alors activés, et le cookie utilisé aura une clé nommée "chat_dssessionid". Cela vous permet d'avoir un contrôle complet sur quelle application utilise quel ID/cookie de session. Vous pouvez aussi avoir de multiples instances du même client stockant leur propre ID de session unique, à condition que vous conserviez d'une manière ou d'une autre le préfixe entre les actualisations / rechargements des pages.

Voir aussi