Die Datenbankmethode On Web Authentication verwaltet die Zugriffe auf den Web Server. Sie wird von 4D oder 4D Server aufgerufen, wenn eine Anfrage des Web Browser die Ausführung einer 4D Methode auf dem Server erfordert (Methode, die über eine URL 4DACTION oder 4DCGI, ein Tag 4DSCRIPT, etc. aufgerufen wird).
Diese Methode empfängt die Text Parameter $1, $2, $3, $4, $5 und $6 und gibt einen Boolean Parameter $0 zurück:
Parameter | Typ | Beschreibung |
$1 | Text | URL |
$2 | Text | HTTP Kopfteil + HTTP body (32 KB maximum) |
$3 | Text | IP Adresse des Web Client (Browser) |
$4 | Text | IP Adresse des Server |
$5 | Text | Benutzername |
$6 | Text | Kennwort |
$0 | Boolean | Wahr = Anfrage angenommen, Falsch = Anfrage abgewiesen |
Sie müssen diese Parameter folgendermaßen deklarieren:
C_TEXT($1;$2;$3;$4;$5;$6)
C_BOOLEAN($0)
Hinweis: Unter Umständen sind nicht alle Parameter der Datenbankmethode On Web Authentication angegeben. Die von der Datenbankmethode empfangene Information richtet sich nach den Optionen, die Sie zuvor im Dialogfenster Datenbank-Eigenschaften ausgewählt haben. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.
- URL
Der erste Parameter ($1) ist die URL, welche der Benutzer im Bereich Location seines Web Browsers eingibt, aus der die Host Adresse entfernt wurde.
Nehmen wir als Beispiel eine Intranet Verbindung. Die IP Adresse Ihres 4D Web Server Rechners ist 123.4.567.89. Nachfolgende Tabelle zeigt die Werte von $1, je nachdem, welche URL im Web Browser eingegeben wurde:
URL im Bereich Location des Web Browsers | Wert des Parameters $ |
123.4.567.89 | / |
http://123.4.567.89 | / |
123.4.567.89/Kunden | /Kunden |
http://123.4.567.89/Kunden | /Kunden |
http://123.4.567.89/Kunden/Hinzufügen | /Kunden/Hinzufügen |
123.4.567.89/Führe_dieses_aus/Wenn_OK/ | /Führe_dieses_aus/Wenn_OK |
Führe_jenes_aus | /Führe_jenes_aus |
- Kopfteil der HTTP Anfrage
Der zweite Parameter ($2) ist der Kopfteil der HTTP Anfrage, die der Web Browser sendet. Beachten Sie, dass dieser Kopfteil komplett an Ihre Datenbankmethode On Web Authentication übergeben wird. Sein Inhalt variiert je nach Art des Web Browsers, der versucht, die Verbindung herzustellen.
Verwendet Ihre Anwendung diese Information, entscheiden Sie selbst, ob der Kopfteil durchlaufen werden soll.
Hinweise:
- Aus Performance-Gründen darf die Datengröße, die über den Parameter $2 läuft, nicht größer als 32 KB sein. Was darüber hinaus geht, wird vom 4D HTTP Server abgeschnitten. Weitere Informationen zu diesem Parameter finden Sie im Abschnitt Datenbankmethode On Web Connection.
- IP Adresse des Web Client
Der Parameter $3 empfängt die IP Adresse des Browser Rechners. Mit dieser Information können Sie zwischen Intranet- und Internet-Verbindungen unterscheiden.
Hinweis: (*) 4D gibt IPv4 Adressen in einem hybrid IPv6/IPv4 Format mit einem 96-bit Prefix zurück, z.B. ::ffff:192.168.2.34 für die IPv4 Adresse 192.168.2.34. Weitere Informationen dazu finden Sie im Abschnitt Unterstützung von IPv6.
- IP Adresse des Server
Der Parameter $4 empfängt die IP Adresse des 4D Web Servers. Dies ermöglicht Multi-Homing, d.h., Sie können Rechner mit mehr als einer IP Adresse nutzen. Weitere Informationen dazu finden Sie im Abschnitt Web Server, Einstellungen.
- Benutzername und Kennwort
Die Parameter $5 und $6 empfangen Benutzername und Kennwort, die der Benutzer im Dialogfenster Standard-Identifikation des Browsers eingibt. Dieser Dialog erscheint für jede Verbindung, wenn im Dialogfenster Datenbank-Eigenschaften eine Option zur Kennwortverwaltung ausgewählt wurde (siehe Abschnitt Sicherheit der Verbindung).
Hinweis: Gibt es den vom Browser gesendeten Benutzernamen in 4D, wird der Parameter $6 (das Kennwort des Benutzers) aus Sicherheitsgründen nicht zurückgegeben.
Die Datenbankmethode On Web Connection wird nur ausgeführt, wenn die Verbindung von On Web Authentication angenommen wurde.
Warnung: Übergeben Sie keinen Wert in $0 oder ist $0 in der Datenbankmethode On Web Authentication nicht definiert, wird die Verbindung als akzeptiert angesehen und die Datenbankmethode On Web Connection wird ausgeführt.
Hinweise:
- Rufen Sie in der Datenbankmethode On Web Authentication keine Elemente der Oberfläche auf (ALERT, DIALOG, etc.), denn das unterbricht die Datenbankmethode und die Verbindung wird zurückgewiesen. Dasselbe gilt, wenn beim Ausführen der Datenbankmethode ein Fehler auftritt.
- Sie können die Ausführung durch 4DACTION oder 4DSCRIPT für jede Projektmethode verbieten, wenn Sie im Dialogfenster Methode-Eigenschaften die Option "Zugang per 4D HTML Tags und URLs (4DACTION...)" markieren. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.
Die Datenbankmethode On Web Authentication wird automatisch aufgerufen, unabhängig vom Modus, wenn eine Anfrage oder Bearbeitung die Ausführung einer 4D Methode erfordert. Sie wird auch aufgerufen, wenn der Web Server eine ungültige statische URL empfängt, z.B. wenn die angefragte statische Seite nicht vorhanden ist.
Die Methode wird in folgenden Fällen aufgerufen:
- Wenn 4D eine URL empfängt, die mit 4DACTION/ beginnt
- Wenn 4D eine URL empfängt, die mit 4DCGI/ beginnt
- Wenn 4D eine URL empfängt, die mit 4DSYNC/ beginnt
- Wenn 4D eine URL empfängt, die eine statische Seite aufruft, die nicht vorhanden ist
- Wenn 4D eine URL mit Root Zugriff empfängt und in den Datenbank-Eigenschaften oder über den Befehl WEB SET HOME PAGE keine Home Page gesetzt wurde.
- Wenn 4D ein Tag 4DSCRIPT in einer halbdynamischen Seite abarbeitet
- Wenn 4D ein Tag 4D LOOP abarbeitet, das auf einer Methode in einer halbdynamischen Seite basiert.
Hinweis zur Kompatibilität: Die Datenbankmethode wird auch aufgerufen, wenn 4D eine URL empfängt, die mit 4DMETHOD/ beginnt. Diese URL ist überholt und wird nur zur Wahrung der Kompatibilität beibehalten.
Beachten Sie, dass die Datenbankmethode On Web Authentication NICHT aufgerufen wird, wenn der Server eine URL empfängt, die nach einer statischen gültigen Seite fragt.
Beispiel für die Datenbankmethode On Web Authentication im BASIC Modus:
C_TEXT($5;$6;$3;$4)
C_TEXT($user;$password;$BrowserIP;$ServerIP)
C_BOOLEAN($4Duser)
ARRAY TEXT($users;0)
ARRAY LONGINT($nums;0)
C_LONGINT($upos)
C_BOOLEAN($0)
$0:=False
$user:=$5
$password:=$6
$BrowserIP:=$3
$ServerIP:=$4
If(WithWildcard($user)|WithWildcard($password))
$0:=False
Else
GET USER LIST($users;$nums)
$upos:=Find in array($users;$user)
If($upos >0)
$4Duser:=Not(Is user deleted($nums{$upos}))
Else
$4Duser:=False
End if
If(Not($4Duser))
QUERY([WebUser];[WebUser]User=$user;*)
QUERY([WebUser]; & [WebUser]Password=$password)
$0:=(Records in selection([WebUser])=1)
Else
$0:=True
End if
End if
If(Substring($BrowserIP;1;7)#"192.100.")
$0:=False
End if
Beispiel für die Datenbankmethode On Web Authentication im DIGEST Modus:
C_TEXT($1;$2;$5;$6;$3;$4)
C_TEXT($user)
C_BOOLEAN($0)
$0:=False
$user:=$5
If(WithWildcard($user))
$0:=False
Else
QUERY([WebUsers];[WebUsers]User=$user)
If(OK=1)
$0:=WEB Validate digest($user;[WebUsers]password)
Else
$0:=False
End if
End if
Die Methode
WithWildcard lautet:
C_LONGINT($i)
C_BOOLEAN($0)
C_TEXT($1)
$0:=False
For($i;1;Length($1))
If(Character code(Substring($1;$i;1))=Character code("@"))
$0:=True
End if
End for