TsgcWebSocketHTTPServerZdarzenia › OnBeforeCommand

OnBeforeCommand Zdarzenie

Wywoływane przed OnCommandGet lub OnCommandOther, aby żądanie mogło być sprawdzone, autoryzowane lub krótko-obwodowane odpowiedzią 401.

Składnia

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

Wartość domyślna

Uwagi

Zdarzenie OnBeforeCommand jest wywoływane dla każdego żądania HTTP przed jego przekazaniem przez serwer do procedur OnCommandGet lub OnCommandOther. Należy przejrzeć obiekt ARequestInfo (Document, Params, Headers, RemoteIP...), aby określić sposób obsługi żądania i odpowiednio ustawić parametr aOptions. Dołączenie opcji hcoUnauthorized powoduje natychmiastowe odrzucenie żądania odpowiedzią 401 (przydatne do blokowania punktu końcowego bez pisania własnej odpowiedzi), dołączenie opcji hcoAuthorizedBasic, hcoAuthorizedOAuth2 lub hcoAuthorizedJWT powoduje potraktowanie żądania jako już autoryzowanego, dzięki czemu sprawdzenie danego schematu zostaje pominięte, a pozostawienie zbioru pustego pozwala na działanie standardowych procedur obsługi poleceń. Jest to zalecane miejsce do obsługi publicznych i uwierzytelnionych punktów końcowych na tym samym serwerze. Zdarzenie jest wywoływane raz dla każdego żądania w protokołach HTTP/1.1, HTTP/2 i HTTP/3. Za żądaniem HTTP/3 nie stoi żaden obiekt połączenia, dlatego w tym transporcie parametr aConnection ma wartość nil.

Przykład


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

Powrót do Zdarzeń