我有一个旧 api,它接收加密请求并在完成后加密响应。我正在尝试将其切换到 mvc4 webapi,并且在我点击此加密之前它一直很顺利。我需要的是一种在请求进入时解密请求的方法,以便 mvc 正确处理它。此外,一旦该过程完成,请在发送响应之前对其进行加密。我不想在每个动作中放置加密部分。
注意:主体仍然被正确格式化为单个项目,因此我会使用自己的选择器通过单个操作将其全部推送,但更喜欢更合适的休息样式实现。
我有一个旧 api,它接收加密请求并在完成后加密响应。我正在尝试将其切换到 mvc4 webapi,并且在我点击此加密之前它一直很顺利。我需要的是一种在请求进入时解密请求的方法,以便 mvc 正确处理它。此外,一旦该过程完成,请在发送响应之前对其进行加密。我不想在每个动作中放置加密部分。
注意:主体仍然被正确格式化为单个项目,因此我会使用自己的选择器通过单个操作将其全部推送,但更喜欢更合适的休息样式实现。
您应该能够使用 MessageHandler 执行此操作。在WebAPIContrib中有一堆如何创建 MessageHandlers 的例子
您可以实现自己的模型绑定器
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());