2017-09-14 11 views
0

私はURLを入力することができ、実行したいRESTメソッドの種類(POST、GET、PUTなど)を選択できるREST-Client Standalone Desktop-Applicationを持っています。認証のための適切な場所

クライアントは主にBody-Message(XML形式)を送信する機能を提供します。メッセージの中には、メッセージを処理するために必要なすべての情報が含まれています。

クライアントにも基本認証があり、各要求もユーザー名とパスワードを送信します。

Delphi XE8アプリケーションウィザードの助けを借りて、私は認証と承認を持つ簡単なスタンドアロンFiremonkey RESTサーバーを作成しました。

Client-Applicationからリクエストを送信すると、私のサーバーは、ウィザードによって追加された "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; 

認可がコンセプトの証明として提示することを意図しているとして、ユーザーのチェックは、ちょうど今の静的です。

しかし、私がこのような権限を行えば、この機能はいつか大きく成長し、私はServerRolesも逃してしまうと思います。残念ながら、私はREST開発の話題で何かを行う適切な方法が何であるかを知るには十分な知識がありません。

ウィザードによって追加された認証マネージャーもあります。しかし前と同じように私はそれをどうするか分からない。

答えて

2

TDSServerに接続されたコンポーネントTDSAuthenticationManagerを使用してください。 コンポーネントTDSAuthenticationManagerには、ユーザー・セッションの作成前に呼び出されるAuthenticationManagerというイベントがあります。変数 "valid"が最後にtrueの場合、ユーザーは認証されます。

このhttps://edn.embarcadero.com/br/article/41267 このhttps://www.embarcadero.com/images/dm/technical-papers/rest-servers-in-delphi-xe-using-datasnap.pdf

を参照してください。
関連する問題