TsgcWebSocketHTTPServer › Événements › OnBeforeCommand

OnBeforeCommand Événement

Se déclenche avant OnCommandGet ou OnCommandOther afin que la requête puisse être examinée, autorisée ou court-circuitée avec une réponse 401.

Syntaxe

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

Valeur par défaut

—

Remarques

OnBeforeCommand s'exécute pour chaque requête HTTP avant que le serveur ne la distribue à OnCommandGet ou OnCommandOther. Inspectez ARequestInfo (Document, Params, Headers, RemoteIP...) pour décider comment la requête doit être traitée et affectez aOptions en conséquence. Incluez hcoUnauthorized pour rejeter immédiatement la requête avec une réponse 401 (utile pour protéger un endpoint sans écrire vous-même la réponse), incluez hcoAuthorizedBasic, hcoAuthorizedOAuth2 ou hcoAuthorizedJWT pour considérer la requête comme déjà autorisée et ignorer ainsi la vérification de ce schéma, ou laissez l'ensemble vide pour laisser les gestionnaires de commandes normaux s'exécuter. Cet événement est l'endroit recommandé pour mélanger des endpoints publics et authentifiés sur le même serveur. Il se déclenche une fois par requête en HTTP/1.1, HTTP/2 et HTTP/3. Une requête HTTP/3 n'a aucun objet de connexion sous-jacent, aConnection vaut donc nil sur ce transport.

Exemple


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

Retour aux événements