Tipps & Tricks - Individuelle Timeouts für interaktive Sessions setzen
Dieser Beitrag zeigt, wie pro Benutzer ein individuelles Session-Timeout gesetzt werden kann. Dazu reagiert ein Prozess auf ein Login, liest den im Benutzerkonto in Sekunden eingetragenen Wert aus und setzt das Session-Timeout entsprechend in Millisekunden.
Benutzerattribut anlegen
Im ersten Schritt legen wir ein neues Benutzerattribut an, in dem pro Benutzer das Session-Timeout in Sekunden hinterlegt werden kann. Öffnen Sie dazu den Schemamanager über das Hauptmenü "Benutzer / Schemamanager" und wählen Sie dort die Klasse "Benutzer" in der linken Spalte aus. Über das Menü "Bearbeiten" kann dann ein neues Attribut erstellt werden.
Setzen Sie hier die folgenden Einstellungen:
-
Name und Titel: Session-Timeout
-
Typ: Integer
-
DB-Spaltenname: SESSIONTIMEOUT
Mit Klick auf "OK" wird das neue Attribut angelegt und der Dialog geschlossen.
Schließen Sie auch den Schemamanager mit Klick auf "OK".
Das Attribut finden Sie nun in jedem Benutzerkonto auf dem Reiter "Weitere Attribute". In der Spalte "Wert" kann nun das gewünschte Session-Timeout in Sekunden eingetragen werden.
Portaleigenschaften bearbeiten
Öffnen Sie die Portaleigenschaften über das Hauptmenü "Extras / Portaleigenschaften" und setzen Sie dort in den Optionen die Einstellung "Bei Anmeldung Login-Prozessereignis senden". Starten Sie anschließend den Portaldienst neu.
Prozess erstellen
Erstellen Sie im Modul "Prozesse" über das Hauptmenü "Datei / Prozess neu" einen Prozess. Entfernen Sie eventuell vorhandene Prozesselemente und legen Sie einen Generischen Ereignisbehandler an. Wählen Sie im Eigenschaftendialog des Elements auf dem Reiter "Generischer Ereignisbehandler" die Klasse "de.uplanet.lucy.server.workflow.eventhandler.SessionLoginWorkflowEventHandler" aus. Fügen Sie dann die folgenden Eigenschaften hinzu:
Name |
Typ |
Wert |
---|---|---|
handleManagerLogin |
boolean |
true |
handleWebLogin |
boolean |
true |
ignoreAnonymousLogin |
boolean |
true |
Damit ist die Konfiguration des Generischen Ereignisbehandlers abgeschlossen.
Erstellen Sie nun eine neue Groovy-Aktionund verbinden Sie diese mit dem Generischen Ereignisbehandler. Öffnen Sie dann den Eigenschaftendialog mit einem Doppelklick auf das Element, klicken Sie "Weiter" und dann auf den Link "Intrexx Editor öffnen". Tragen Sie das folgende Skript im Editor ein:
def iTimeout = g_session?.user.sessionTimeout
if (iTimeout) {
def timeoutMS = iTimeout * 1000L // in milliseconds
g_session.timeout = timeoutMS
g_syslog.info("Set session timeout to ${timeoutMS} milliseconds.")
}
Schließen Sie alle Dialoge mit Klick auf "OK" und speichern Sie den Prozess. Anschließend wird das Session-Timeout bei jedem Login entsprechend gesetzt.