TsgcWebSocketHTTPServer › Eventi › OnBeforeCommand
Si attiva prima di OnCommandGet o OnCommandOther in modo che la richiesta possa essere filtrata, autorizzata o interrotta con una risposta 401.
property OnBeforeCommand: TsgcWSOnBeforeCommand;
// TsgcWSOnBeforeCommand = procedure(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions) of object
—
OnBeforeCommand viene eseguito per ogni richiesta HTTP prima che il server la instradi a OnCommandGet o OnCommandOther. Esamini ARequestInfo (Document, Params, Headers, RemoteIP...) per decidere come gestire la richiesta e assegni di conseguenza aOptions. Includa hcoUnauthorized per rifiutare immediatamente la richiesta con una risposta 401 (utile per proteggere un endpoint senza dover scrivere alcuna risposta), includa hcoAuthorizedBasic, hcoAuthorizedOAuth2 o hcoAuthorizedJWT per considerare la richiesta come già autorizzata, in modo che il controllo di quello schema venga saltato, oppure lasci il set vuoto per consentire l'esecuzione dei normali gestori di comandi. L'evento è il posto consigliato per combinare endpoint pubblici e autenticati sullo stesso server. Si attiva una volta per ogni richiesta su HTTP/1.1, HTTP/2 e HTTP/3. Una richiesta HTTP/3 non ha un oggetto connessione alle spalle, quindi aConnection vale nil su questo trasporto.
procedure OnBeforeCommand(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions);
begin
if aRequestInfo.Document = '/public' then
aOptions := [hcoAuthorizedBasic];
end;