TsgcWebSocketHTTPServer › 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 dağıtmadan ö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 aOptions değerini buna göre atayın. İsteği 401 yanıtıyla hemen reddetmek için hcoUnauthorized'ı dahil edin (herhangi bir yanıt yazmadan bir uç noktayı korumak için kullanışlıdır), isteği zaten yetkilendirilmiş olarak ele almak ve böylece o şemaya ilişkin denetimin atlanmasını sağlamak için hcoAuthorizedBasic, hcoAuthorizedOAuth2 ya da hcoAuthorizedJWT'yi dahil edin veya normal komut işleyicilerinin çalışmasına izin vermek için kümeyi boş bırakın. Olay, aynı sunucuda genel ve kimlik doğrulamalı 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 bulunmaz, bu nedenle aConnection bu taşıma üzerinde nil değerindedir.
procedure OnBeforeCommand(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions);
begin
if aRequestInfo.Document = '/public' then
aOptions := [hcoAuthorizedBasic];
end;