TsgcWebSocketHTTPServer › Événements › OnBeforeCommand
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.
property OnBeforeCommand: TsgcWSOnBeforeCommand;
// TsgcWSOnBeforeCommand = procedure(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions) of object
—
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.
procedure OnBeforeCommand(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions);
begin
if aRequestInfo.Document = '/public' then
aOptions := [hcoAuthorizedBasic];
end;