TsgcWebSocketHTTPServerEvents › OnBeforeCommand

OnBeforeCommand 이벤트

요청을 선별, 권한 부여하거나 401 응답으로 단락할 수 있도록 OnCommandGet 또는 OnCommandOther 전에 발생합니다.

구문

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

기본값

설명

OnBeforeCommand는 서버가 OnCommandGet 또는 OnCommandOther로 디스패치하기 전에 모든 HTTP 요청에 대해 실행됩니다. ARequestInfo(Document, Params, Headers, RemoteIP 등)를 검사하여 요청을 처리하는 방법을 결정하고 그에 따라 aOptions를 할당하십시오. 401 응답으로 요청을 즉시 거부하려면 hcoUnauthorized를 포함하고(응답을 직접 작성하지 않고 엔드포인트를 게이트하는 데 유용), 해당 스킴의 검사를 건너뛰도록 요청을 이미 승인된 것으로 처리하려면 hcoAuthorizedBasic, hcoAuthorizedOAuth2 또는 hcoAuthorizedJWT를 포함하거나, 일반 명령 핸들러가 실행되도록 set을 비워 두십시오. 이 이벤트는 동일한 서버에서 public 및 인증된 엔드포인트를 혼합하기에 권장되는 위치입니다. 이 이벤트는 HTTP/1.1, HTTP/2 및 HTTP/3에서 요청당 한 번씩 발생합니다. HTTP/3 요청에는 그 뒤에 연결 객체가 없으므로 해당 전송에서는 aConnection이 nil입니다.

예제


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

이벤트로 돌아가기