TsgcWebSocketHTTPServer › Events › OnBeforeCommand

OnBeforeCommand Event

Wordt geactiveerd vóór OnCommandGet of OnCommandOther zodat het verzoek kan worden gecontroleerd, geautoriseerd of vroegtijdig kan worden beëindigd met een 401-respons.

Syntaxis

property OnBeforeCommand: TsgcWSOnBeforeCommand;
// TsgcWSOnBeforeCommand = procedure(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions) of object

Standaardwaarde

—

Opmerkingen

OnBeforeCommand wordt uitgevoerd voor elk HTTP-verzoek voordat de server het doorstuurt naar OnCommandGet of OnCommandOther. Inspecteer ARequestInfo (Document, Params, Headers, RemoteIP...) om te bepalen hoe het verzoek moet worden afgehandeld en wijs aOptions dienovereenkomstig toe. Voeg hcoUnauthorized toe om het verzoek onmiddellijk te weigeren met een 401-antwoord (handig om een eindpunt te beveiligen zonder zelf een antwoord te schrijven), voeg hcoAuthorizedBasic, hcoAuthorizedOAuth2 of hcoAuthorizedJWT toe om het verzoek als reeds geautoriseerd te behandelen zodat de controle voor dat schema wordt overgeslagen, of laat de set leeg om de normale opdrachthandlers te laten uitvoeren. De gebeurtenis is de aanbevolen plek om openbare en geverifieerde eindpunten op dezelfde server te combineren. Deze wordt één keer per verzoek geactiveerd bij HTTP/1.1, HTTP/2 en HTTP/3. Achter een HTTP/3-verzoek zit geen verbindingsobject, dus aConnection is nil bij dat transport.

Voorbeeld


procedure OnBeforeCommand(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo;
  AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions);
begin
  if aRequestInfo.Document = '/public' then
    aOptions := [hcoAuthorizedBasic];
end;

Terug naar Events