TsgcWebSocketHTTPServer › 事件 › OnBeforeCommand
在 OnCommandGet 或 OnCommandOther 之前触发,以便对请求进行筛查、授权或直接以 401 响应短路。
property OnBeforeCommand: TsgcWSOnBeforeCommand;
// TsgcWSOnBeforeCommand = procedure(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions) of object
—
OnBeforeCommand 在服务器将每个 HTTP 请求分发给 OnCommandGet 或 OnCommandOther 之前运行。检查 ARequestInfo(Document、Params、Headers、RemoteIP 等)以决定请求的处理方式,并相应地分配 aOptions。包含 hcoUnauthorized 可立即以 401 响应拒绝请求(无需自行编写任何响应,即可对端点进行门控),包含 hcoAuthorizedBasic 可强制 Basic 身份验证,或将集合保留为空以让普通命令处理程序运行。此事件是在同一服务器上混合公共端点和已认证端点的推荐位置。
procedure OnBeforeCommand(const aConnection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo; var aOptions: TsgcHTTPCommandOptions);
begin
if aRequestInfo.Document = '/public' then
aOptions := [hcoAuthorizedBasic];
end;