2012-04-09 15 views
1

私は、暗号化された要求を受け取り、応答が完了したら暗号化する古いAPIを持っています。私はこれをmvc4 webapiに切り替えようとしていますが、この暗号化を打つまで滑らかになりました。私が必要とするのは、mvcが適切に動作するように、リクエストを復号化する方法です。また、プロセスが完了すると、応答を暗号化してから送信します。私は各アクションに暗号化部分を配置したくありません。MVC4の暗号化要求/応答WebApi

注:ボディはまだ1つのアイテムとして適切にフォーマットされています。したがって、自分でセレクタを使用して1つのアクションですべてをプッシュしますが、より適切なレストスタイルの実装を好むでしょう。

+1

何らかの種類のレガシー機能を暗号化するのは、SSLがこの要件のためのより優れたテクニックなので、いくつかの種類のレガシー機能ですか? – saintedlama

答えて

0

は、あなた自身のモデルバインダー

public class DecObjModelBinder : IModelBinder 
{ 


    public object BindModel(ControllerContext controllerContext, 
     ModelBindingContext bindingContext) 
    { 
    //make a instance of your object 
    var myObj = new DecObj() 

    //bind the properties from my obj 

    myObj.Title= bindingContext 
     .ValueProvider 
     .GetValue("Title") // The Property name sent from the browser 
     .ToString(); 

    /* then the property you want to decrypt */ 
    var encBody = bindingContext 
     .ValueProvider 
     .GetValue("EncBody") // The Property name sent from the browser 
     .ToString(); 

    /* decryption logic here to the encBody then after assign the decrypted value to myObj*/ 

    return myObj; 
    } 

実装することができ、その後、あなたは経由のApplication_StartでGlobal.asxでModelBinderを登録する:あなたはMessageHandlerのでこれを行うことができるはずModelBinders.Binders.Add(typeof(DecObj), new DecObjModelBinder());

+0

これは処理中に遅すぎます。アクションはすでに選択されています。私はあらゆる行動がDecObjを受け入れることを望んでいません。私は実際にアクションが選択される前にプロセスの早期にリクエストに達することを望んでいました。 – Thad

+0

'ActionInvoker'は' ActionInvoker'が 'ModelBinder'がその仕事をし、' ModelBinder'がそうするようなアクションを呼び出すと、 'ActionInvoker'がアクションパラメタの責任を負うパイプラインの早い段階でアクションを呼び出しますデータを読み込んでバインドする最初の仕事 –