我有一个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