TsgcWebSocketHTTPServer › Eventos › OnBeforeCommand

OnBeforeCommand Evento

Se activa antes de OnCommandGet o OnCommandOther para que la solicitud pueda ser examinada, autorizada o cortocircuitada con una respuesta 401.

Sintaxis

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

Valor Predeterminado

—

Observaciones

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.

Ejemplo


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

Volver a Eventos