如何使用 datasnap 获取作为 header 传递的令牌?

How to get a token passed as header using datasnap?

在我的客户端应用程序中,我使用以下代码在 header 中添加一个令牌:

RESTRequest.Params.AddItem('Authorization', 'Bearer ' + MyToken, TRESTRequestParameterKind.pkHTTPHEADER, [TRESTRequestParameterOption.poDoNotEncode]);

我想使用 datasnap 在我的服务器中获取此令牌。

我试过使用 here and here 的答案,但没有成功。

可能吗?

我该怎么做?

编辑

我可以验证 Datasnap 执行 TIdCustomHTTPServer.DoParseAuthentication 并且 DoParseAuthentication 调用 FOnParseAuthentication 如果它被分配。

那么,我如何破解 Datasnap 来分配我自己的 OnParseAuthentication

我认为这解决了我的问题。

我也遇到了同样的问题。如果使用 Authentication header 那么我们会收到 EIdHTTPUnsupportedAuthorisationScheme 错误,我需要设置 OnParseAuthentication。我今天才开始研究这个,在测试应用程序中 "Desktop" 我可以执行以下操作。

procedure TMainForm.FormCreate(Sender: TObject);
begin
  FServer := TIdHTTPWebBrokerBridge.Create(Self);
  FServer.OnParseAuthentication := DoParseAuthentication;// <-added this line
end;

现在我需要弄清楚如何更新 ASAPI dll 来执行相同的操作。