加密MVC 4 Web Api中的请求/响应

时间:2012-04-09 14:13:41

标签: asp.net-mvc rest asp.net-web-api

我有一个旧的api接收加密的请求,并在完成后加密响应。我试图将其切换到mvc4 webapi并且它已经顺利,直到我点击此加密。我需要的是一种解密请求的方法,因为mvc会正确地对其执行操作。此过程完成后,在发送响应之前加密响应。我不想在每个动作中放置加密部分。

注意: 身体仍然被正确地格式化为单个项目,所以我会通过一个单独的动作将其全部推送到我自己的选择器,但是更喜欢更合适的休息风格实现。

2 个答案:

答案 0 :(得分: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中注册ModelBinderModelBinders.Binders.Add(typeof(DecObj), new DecObjModelBinder());

答案 1 :(得分:0)

您应该可以使用MessageHandler执行此操作。有很多关于如何在WebAPIContrib

中创建MessageHandlers的示例