Gorilla Web Toolkit Komponenten

Gorilla Mux

Gorilla mux stellt gegenüber dem Go Standard http.ServeMux erweiterte Funktionalität bei der Definition von URLs und ihrer Zuordnung zu Request Handlern zur Verfügung. Daher wird in der Server main Funktion dieser Request Multiplexer verwendet. Die Verwendung ist auf der Gorilla Website sehr gut dokumentiert.

Gorilla Sessions

Die Verwaltung von Sessions ist bei Web Applikationen eine zentrale Funktionalität. Das verbindungslose HTTP Protokoll erfordert besondere Vorkehrungen, um jeden Request einer Sitzung und damit einem bestimmten Benutzer zuzuordnen. Gorilla Sessions macht es einfach, Sitzungen zu verwalten und für jede Sitzung individuell Daten zu speichern. Sessions werden dabei durch Cookies identifiziert, die mit Gorilla Securecookie erzeugt werden.

Sitzung anlegen, Daten speichern

Beispielcode: Helper Funktion für den Login Handler

51
Die Get Methode von SessionStore liefert die aktuelle Sitzung, wenn ein passender Cookie im request r gefunden wurde, oder legt eine neue Sitzung an. Der zweite Parameter S_DKFAI  ist ein Schlüssel, der die Applikation identifiziert.
53
Ein Decode Error tritt auf, wenn der Sitzungscookie nicht dekodiert werden kann. Dies ist der Fall, wenn der Server neu gestartet wurde und der Browser noch den „alten“ Cookie mitgeschickt hat. In diesem Fall legt der Code eine neue Session an.
63 – 67
Die Session kann im SessionStore Werte ablegen. Außerdem kann das Sitzungs-Timeout gesetzt werden. Der Default Wert ist viel zu lang für normale Anwendungen.
Auf Session-Daten zugreifen

Der Zugriff auf die in der Session gespeicherten Daten erfolgt analog. Wieder wird der request übergeben, um über den Session Cookie die richtigen Daten für diese Sitzung zu erhalten.

Sitzung beenden

92
Jeder Zugriff auf die Sitzung erfolgt über den Cookie im request r und den Applikationsschlüssel S_DKFAI.
98, 99
Dann kann die Sitzung beendet werden. Das muss mit Save(…) gespeichert werden. Diese Methode löscht auch den Session Cookie im Response.
Session Check und Autorisierung

Sessions werden für Filterfunktionen verwendet, die den Zugriff auf URLs beschränken. Im einfachsten Fall muss eine Session vorhanden sein, in anderen Fällen muss ein Benutzer angemeldet sein und bestimmte Rollen zugeordnet haben, um auf die URL zugreifen zu können. Details werden im Zusammenhang mit Request Filtern beschrieben: Session Check Filter und Authorization Filter.

Session Store Details

Gorilla Sessions unterstützt zwei unterschiedliche Varianten für den Session Store: CookieStore  und FilesystemStore . CookieStore legt die Werte serialisiert und optional verschlüsselt im Session Cookie ab. Dagegen verwendet FilesystemStore eine Datei in einem temp Verzeichnis der Web Applikation. CookieStore ist optimal, wenn nur relativ wenig Information in der Session gespeichert werden soll. Das Maximum beträgt 4k Byte. Größere Cookies werden vom Internet Explorer nicht akzeptiert. Der FilesystemStore hat keine derartige Beschränkung.

Für den einfachen Zugriff auf den SessionStore aus allen Programmteilen der Beispielapplikation wird die Funktion SessionStore() implementiert.

 

Die Beispielapplikation verwendet einen Filesystem Store, da 4k Byte pro Session als Speicher zu wenig sind.

33
Alle eigenen Typen, die im Store abgelegt werden sollen, müssen serialisiert/deserialisiert werden können. Das macht die Funktion registerTypes().
35
Die maximale Länge wird auf 0 gesetzt, d.h. unbeschränkt.
Für die Serialisierung und Deserialisierung von Go Objekten gibt es verschiedene Packages. Gorilla Sessions verwendet das Package encoding/gob. Die Funktion gob.Register(…) macht unsere Anwendungstypen [de]serialisierbar.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.