TsgcWebSocketHTTPServer › Eventos › OnBeforeCommand
Se activa antes de OnCommandGet o OnCommandOther para que la solicitud pueda ser examinada, autorizada o cortocircuitada con una respuesta 401.
property OnBeforeCommand: TsgcWSOnBeforeCommand;
// TsgcWSOnBeforeCommand = procedure(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions) of object
—
OnBeforeCommand se ejecuta para cada solicitud HTTP antes de que el servidor la despache a OnCommandGet o OnCommandOther. Inspeccione ARequestInfo (Document, Params, Headers, RemoteIP...) para decidir cómo debe tratarse la solicitud y asigne aOptions en consecuencia. Incluya hcoUnauthorized para rechazar la solicitud inmediatamente con una respuesta 401 (útil para proteger un endpoint sin escribir ninguna respuesta usted mismo), incluya hcoAuthorizedBasic, hcoAuthorizedOAuth2 o hcoAuthorizedJWT para tratar la solicitud como ya autorizada y omitir así la comprobación de ese esquema, o deje el conjunto vacío para que los manejadores de comandos normales continúen su ejecución. El evento es el lugar recomendado para combinar endpoints públicos y autenticados en el mismo servidor. Se activa una vez por solicitud en HTTP/1.1, HTTP/2 y HTTP/3. Una solicitud HTTP/3 no tiene detrás ningún objeto de conexión, por lo que aConnection es nil en ese transporte.
procedure OnBeforeCommand(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions);
begin
if aRequestInfo.Document = '/public' then
aOptions := [hcoAuthorizedBasic];
end;