JavaScript-Client-Sitzungen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu DataSnap-REST


JavaScript-REST-Clients für DataSnap erhalten nach dem Aufruf ihrer ersten Servermethode eine Sitzungs-ID, vorausgesetzt, dass die Benutzerauthentifizierung erfolgreich war. Wenn die Authentifizierung erfolgreich abgeschlossen wurde, die Autorisierung aber nicht, wird trotzdem eine Sitzungs-ID zugeordnet.

Die Sitzungs-ID wird in der Variable $$SessionID$$ gespeichert, die in der Datei ServerFunctionExecutor.js definiert ist.

Beenden der Sitzung

Wenn die Sitzung beendet wird, löscht der Client den Wert von $$SessionID$$. Der nächste Aufruf einer Servermethode erstellt eine neue Sitzung.

Ablauf

Nach einer bestimmten vom Server definierten Zeitspanne kann die Sitzung ablaufen. Der Vorgabewert dafür beträgt 20 Minuten. Bei der Übergabe der Server-Sitzungs-ID an den Client wird auch die Zeitspanne bis zum Ablauf der Sitzung übergeben. Damit wird dem Client mitgeteilt, wann die Sitzungs-ID ignoriert werden kann, um zu vermeiden (oder wenigstens das Risiko zu minimieren), dass eine Sitzungs-ID für eine abgelaufene Sitzung an den Server übergeben wird. Die Übergabe einer ID für eine abgelaufene Sitzung würde dazu führen, dass der Aufruf mit der Meldung "Sitzung abgelaufen" fehlschlägt. Die Ablaufzeit basiert auf der Inaktivität, daher wird jedes Mal, wenn Sie eine Servermethode aufrufen, Ihre Sitzung erneuert.

Beendigung durch den Benutzer

Sie können die Sitzung im Client-Code manuell schließen, indem Sie für eine ServerFunctionExecutor-Instanz die Funktion closeSession aufrufen. Sie erhalten Zugriff auf eine Instanz des Executor aus einer Proxy-Klasseninstanz durch Aufruf von [Proxy].executor. Wenn eine Instanz von ClientChannel verfügbar ist, kann auch eine closeSession-Funktion verwendet werden.

Beendigung durch den Server

Der Server kann eine Sitzung jederzeit beenden. Wenn der Client-Code dann versucht, mit der Sitzungs-ID etwas auf dem Server aufzurufen, wird eine JSON-Antwort zurückgegeben, die besagt, dass die Sitzung abgelaufen ist.

Verlassen der Seite

Standardmäßig wird die Sitzungs-ID nicht in einem Cookie gespeichert. Wenn Sie die Seite aktualisieren, sie verlassen und wieder zur ihr zurückkehren oder zwischen Seiten einer mehrseitigen Anwendung navigieren, wird daher eine neue Sitzung erstellt und die alte verbleibt auf dem Server, bis sie abläuft.

Beibehalten der Sitzung

Um die Sitzungs-ID zwischen dem Laden von Seiten beizubehalten, müssen Sie das Sitzungs-Cookie aktivieren. Rufen Sie dazu Folgendes auf:

initSessionData(true, "chat_");

Dies sollte beim ersten Laden der Seite aufgerufen werden, nachdem die Datei ServerFunctionExecutor.js einbezogen wurde. Die Sitzungs-ID wird damit in einem Cookie gespeichert, das zur selben Zeit wie die Sitzung auf dem Server abläuft. Der zweite Parameter ist ein String mit einer allgemeinen Cookie-ID (dssessionid). Das bedeutet, dass bei einem Aufruf von initSessionData(true, "chat_") die Cookies aktiviert werden, und das verwendete Cookie einen Schlüssel namens "chat_dssessionid" erhält. Damit haben Sie die vollständige Kontrolle darüber, welche Anwendung welche Sitzungs-ID bzw. welches Cookie verwendet. Es ist auch möglich, mehrere Instanzen desselben Clients zu verwenden, die jeweils ihre eigene eindeutige Sitzungs-ID speichern. Voraussetzung dafür ist aber, dass das Präfix zwischen dem Aktualisieren/Neuladen von Seiten erhalten bleibt.

Siehe auch