WebBroker-Sitzungsverwaltung
Nach oben zu Web Broker verwenden - Index
Ab RAD Studio 13.0 verwaltet die neue Klasse TWebSessionManager eine Liste mit TWebSession-Objekten. Diese nicht visuelle Komponente stellt zur Entwurfszeit eine Reihe von Eigenschaften bereit. Standardmäßig verwendet sie ein SessionId-Cookie, aber es sind auch andere Optionen möglich. Entwickler können dem Sitzungsobjekt Daten zuordnen.
Die Eigenschaft TWebRequest.Session gibt die Sitzung zurück, die der Anforderung zugeordnet ist. Sie können benutzerdefinierte Objekte in TWebSession.DataVars speichern und sie so direkt in WebStencils-Skripten verfügbar machen.
Die Sitzungsauthentifizierung kann in die Sitzungsverwaltung integriert werden und auf unterschiedlichen Logiken basieren. Zur sofortigen Verwendung stehen TWebBasicAuthenticator (zur Implementierung der HTTP-Basisauthentifizierung) oder TWebFormsAuthenticator (für eine benutzerdefinierte, auf HTML-Formularen basierende Authentifizierung) bereit. Sowohl TWebSessionManager als auch TWebFormsAuthenticator können in ein Webmodul platziert werden, jedoch jeweils nur eine Instanz.
Ein "sentinel"-Algorithmus wurde in TCustomWebDispatcher.DispatchAction integriert und delegiert die Verarbeitung an IWebSessionManager oder IWebAuthenticator.
Inhaltsverzeichnis
Sitzungsverwaltung
Die neue Komponente TWebSessionManager stellt fortgeschrittene Funktionen für die Sitzungsverwaltung bereit. Es kann auf Sitzungsdaten, die entweder in Cookies (Standard), Headern oder Abfrageparametern gespeichert sind, in WebStencils-Vorlagen mit der Syntax @session.xxx zugegriffen werden.
Die Komponente unterstützt flexible Sitzungs-Geltungsbereiche: Sitzungen können unbegrenzt, pro authentifizierten Benutzer zugewiesen oder zur Erhöhung der Sicherheit an eine Benutzer–IP-Kombination gebunden sein. Sitzungen laufen nach einer konfigurierbaren Zeitspanne ab und Anwendungen speichern zum direkten Zugriff benutzerdefinierte Objekte in DataVars.
TWebRequest.Session gibt die aktuelle Sitzung zurück und ermöglicht so die sofortige Speicherung und den Abruf ohne weitere Einrichtung.
WebStencils greift auf Sitzungsdaten über @session.customObject zu, wobei @customObject als Kurzform für in DataVars gespeicherte Objekte steht.
Konfiguration
IdLocation: Speicherort der Sitzungs-ID –ilCookie(Standard),ilHeaderoderilQuery.IdName: Name des Sitzungs-ID-Parameters (Standard: "sessionId").Scope: Eindeutigkeitsebene der Sitzung:ssUnlimited: Neue Sitzung für jede Anforderung ohne Sitzungs-ID (Standard).ssUser: Eine Sitzung pro authentifizierten Benutzer (erfordert Authentifikator).ssUserAndIP: Eine Sitzung pro Benutzer+IP-Kombination (erfordert Authentifikator).
Timeout: Sitzungsablauf in Sekunden (Standard: 3600).SharedSecret: Sichert Sitzungs-IDs für Sitzungen mit Benutzer-Geltungsbereich.
TWebSession repräsentiert einzelne Sitzungen mit:
DataVars: Benutzerdefinierter Schlüssel-Wert-Speicherung (Objekte im Besitz einer Sitzung).User: Zugeordnetem authentifizierten Benutzer (IWebUser-Interface).- Basisinformationen wie: CreatedTime, LastURL, LastIP usw.
- Zugriff über die Eigenschaft
TWebRequest.Session.
Authentifizierung
Ab RAD Studio 13.0 gibt es zwei verwendungsbereite Authentifikatoren:
TWebBasicAuthenticator für die standardmäßige HTTP-Basisauthentifizierung:
- Verwendet Standard-Autorisierungs-Header
- Konfigurierbare Eigenschaft
Realm - Automatische Extraktion der Anmeldeinformationen und Challenge-Generierung
TWebFormsAuthenticator für benutzerdefinierte auf HTML-Formulare basierende Anmeldeabläufe:
LoginURL: Seite des AuthentifizierungsformularsFailedURL: Umleitung für fehlgeschlagene AuthentifizierungHomeURL: Standardumleitung nach erfolgreicher AnmeldungReturnURLParam: Abfrageparameter zum Beibehalten der Original-URL (Standard: "returnUrl")
TWebFormsAuthenticator verwaltet den gesamten Anmeldeablauf. Die Komponente leitet nicht authentifizierte Anforderungen an die Anmeldeseite weiter, verarbeitet POST-Anmeldeinformationen und leitet Benutzer über den Parameter ReturnURL zur Original-URL zurück. Die Konfiguration verwendet die Eigenschaften LoginURL, FailedURL und HomeURL, und das Ereignis OnAuthenticate überprüft die Anmeldeinformationen anhand des Benutzerspeichers.
Beide Authentifikatoren unterstützen die Abmeldung über POST an LogoutURL und verwenden das Ereignis OnAuthenticate zur Überprüfung der Anmeldeinformationen.
Autorisierung
TWebAuthorizer stellt die rollenbasierte Zugriffssteuerung über Autorisierungszonen bereit. URL-Muster, wie /admin, definieren geschützte Bereiche, und der Zugriff ist durch Benutzerrollen eingeschränkt, die in einer durch Komma getrennten Liste angegeben sind. Zu den Autorisierungsebenen gehören zkFree, zkProtected und zkIgnore.
Die Autorisierung überprüft Benutzerrollen anhand der Zonenanforderungen. Verwenden Sie das Ereignis OnAuthorize für die benutzerdefinierte Autorisierungslogik. Eine fehlgeschlagene Autorisierung leitet zu UnauthorizedURL um oder gibt den Status 403 zurück.
Außerdem enthält das Sitzungsobjekt die Methode UserHasRole.
Konfiguration
- PathInfo: Maske des URL-Musters zum Abgleich von Anforderungen, z. B.: /admin*
- Kind: Schutzebene:
zkIgnore: Gesamte Verarbeitung überspringenzkFree: Anonymen Zugriff zulassenzkProtected: Authentifizierung erforderlich
- Roles: Durch Komma getrennte Liste mit den erforderlichen Benutzerrollen
WebStencils-Integration
WebStencils-Vorlagen unterstützen die rollenbasierte Inhaltssteuerung durch @session.UserHasRole('admin') und ermöglichen so die Anzeige von Abschnitten entsprechend den Benutzerberechtigungen.
Sitzungen können in WebStencils-Vorlagen integriert werden:
- @session.xxx: Zugriff auf Eigenschaften des Sitzungsobjekts
- @session.DataVars: Zugriff auf benutzerdefinierte Sitzungsvariablen
- @session.UserHasRole(<String>): Prüft, ob ein Benutzer eine bestimmte Rolle innehat
- @<n>: Direkter Zugriff auf Objekte, die in DataVars mit dem Schlüssel
<n>gespeichert sind
Anforderungseigenschaften
RAD Studio lässt einen TWebSessionManager und einen Authentifikator pro Webmodul zu. Der Dispatcher-Sentinel erkennt diese Komponenten automatisch, während Ereignisbehandlungsroutinen benutzerdefinierte Authentifizierungs- und Autorisierungslogik implementieren.
- TWebRequest.AuthUserName: Authentifizierter Benutzername
- TWebRequest.AuthMethod: Verwendete Authentifizierungsmethode
- TWebRequest.Session: Aktuelles Sitzungsobjekt der Anforderung
TWebSessionManager erstellt automatisch Sitzungen. Ist ein Authentifikator vorhanden, ist die Authentifizierung verpflichtend und kann mit TWebAuthorizer gesteuert werden.
Komponenten interagieren über die Interfaces IWebSessionManager, IWebAuthenticator und IWebAuthorizer.
Protokollausgabe
TWebApplication.Log zeichnet Meldungen mit Schweregrad, Text und Parametern auf. Es kann auf allen Plattformen ausgeführt werden und ist in das Protokollsystem des Hosting-Webservers eingebunden.
- Apache: Protokolldatei des Apache-Servers, standardmäßig logs\error.log
- ISAPI: Windows-Ereignisprotokoll (eventvwr.msc) -> Windows-Protokolle
- CGI: Datei mit dem Namen TCGIApplication.LogFileName
- FastCGI: Protokolldatei des HTTP-Servers (Apache, nginx), standardmäßig logs\error.log