TsgcHTTPServer › Olaylar › OnBeforeCommand
İsteğin incelenebilmesi, yetkilendirilebilmesi veya 401 yanıtıyla kısa devre yaptırılabilmesi için OnCommandGet veya OnCommandOther'dan önce tetiklenir.
property OnBeforeCommand: TsgcWSOnBeforeCommand;
// TsgcWSOnBeforeCommand = procedure(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions) of object
—
OnBeforeCommand, sunucu isteği OnCommandGet veya OnCommandOther'a göndermeden önce her HTTP isteği için çalışır. İsteğin nasıl işlenmesi gerektiğine karar vermek için ARequestInfo'yu (Document, Params, Headers, RemoteIP...) inceleyin ve buna göre aOptions'ı atayın. İsteği hemen bir 401 yanıtıyla reddetmek için hcoUnauthorized ekleyin (bir uç noktayı kendiniz herhangi bir yanıt yazmadan kilitlemek için kullanışlıdır), isteği zaten yetkilendirilmiş olarak kabul edip o şemaya ait denetimin atlanmasını sağlamak için hcoAuthorizedBasic, hcoAuthorizedOAuth2 ya da hcoAuthorizedJWT ekleyin veya normal komut işleyicilerinin çalışmasına izin vermek için kümeyi boş bırakın. Olay, aynı sunucuda genel ve kimliği doğrulanmış uç noktaları karıştırmak için önerilen yerdir. HTTP/1.1, HTTP/2 ve HTTP/3 üzerinde istek başına bir kez tetiklenir. Bir HTTP/3 isteğinin arkasında bağlantı nesnesi yoktur, bu nedenle aConnection bu taşıma üzerinde nil'dir.
procedure OnBeforeCommand(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions);
begin
if aRequestInfo.Document = '/public' then
aOptions := [hcoAuthorizedBasic];
end;