1

我有一个旧 api,它接收加密请求并在完成后加密响应。我正在尝试将其切换到 mvc4 webapi,并且在我点击此加密之前它一直很顺利。我需要的是一种在请求进入时解密请求的方法,以便 mvc 正确处理它。此外,一旦该过程完成,请在发送响应之前对其进行加密。我不想在每个动作中放置加密部分。

注意:主体仍然被正确格式化为单个项目,因此我会使用自己的选择器通过单个操作将其全部推送,但更喜欢更合适的休息样式实现。

4

2 回答 2

0

您应该能够使用 MessageHandler 执行此操作。在WebAPIContrib中有一堆如何创建 MessageHandlers 的例子

于 2012-04-10T02:01:43.760 回答
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;
   }

然后您ModelBinder通过以下方式在 Application_Start 中注册 Global.asx:ModelBinders.Binders.Add(typeof(DecObj), new DecObjModelBinder());

于 2012-04-09T15:15:03.410 回答