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.

Intrexx hat kein Problem mit einer hohen Anzahl von User-Sessions. Sollten Sie individuelle Timeouts setzen wollen, beachten Sie bitte die Angabe einer validen, ausreichenden Zeitspanne (empfohlen mindestens 1200, max. 36.000 Sekunden) bei jedem Benutzer.

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.