休息服务器适当的身份验证位置



我有一个REST-CLIENT独立桌面应用程序,我可以在其中输入一个URL,可以选择要执行哪种rest方法(发布,获取,放置等)

客户端主要服务于发送身体消息(XML格式)的功能。在消息中包含所有要处理消息的必要信息。

客户端还具有基本的身份验证器,因此每个请求也发送了用户名和密码。

在Delphi XE8应用程序向导的帮助下,我创建了一个具有身份验证和授权的简单独立的FireMonKey REST服务器。

当我从客户端应用中发送请求时,我的服务器可以在" WebModuledeFaultAction" - 函数中收到该请求,该请求已由向导添加。

我想知道的是不管这是检查合法性请求授权的适当地方。

看起来像这样:

procedure TWebModule1.WebModuleDefaultAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  s:string;
  Username:string;
  Password:String;
begin
  s:=Copy(Request.Authorization,7,length(Request.Authorization)-6);
  s:=TNetEncoding.Base64.Decode(s);
  if (Username='JohnDoe') and (Password='MyPassword') then
  begin
    if (Request.InternalPathInfo='') or (Request.InternalPathInfo='/') then Response.Content:=ReverseString.Content
    else if (Request.InternalPathInfo='ShowContent') or (Request.InternalPathInfo='/ShowContent') then Response.Content:=PP_ShowContent.Content
    else Response.SendRedirect(Request.InternalScriptName + '/');
    handled:=true;
  end
  else
  begin
    Response.Content:='Unauthorized';
    handled:=false;
  end;
end;

目前,用户检查是静态的,因为授权旨在作为概念证明。

但是,如果我这样做这样的授权,那么我希望有一天会变得太大,而且我也错过了服务器。不幸的是,我在休息发展的主题上不够精通,无法知道做什么的正确方法。

我已经看到,还有一个由向导添加的身份验证管理器。但是和以前一样,我不知道该怎么办。

尝试使用与您的TDSServer连接的组件TDSauthenticationManager。组件TDSAuthenticationManager具有一个名为AuthenticationManager的事件,该事件在创建用户会话之前被调用。如果您的变量"有效"最终是正确的,则用户将进行身份验证。

请参阅此https://edn.embarcadero.com/br/article/41267和此https://www.embarcadero.com/images/dm/technical-papers/rest-servers-ind-servers-in-delphi-xe-using-datasnap.pdf

最新更新