我有一个旧的api接收加密的请求,并在完成后加密响应。我试图将其切换到mvc4 webapi并且它已经顺利,直到我点击此加密。我需要的是一种解密请求的方法,因为mvc会正确地对其执行操作。此过程完成后,在发送响应之前加密响应。我不想在每个动作中放置加密部分。
注意: 身体仍然被正确地格式化为单个项目,所以我会通过一个单独的动作将其全部推送到我自己的选择器,但是更喜欢更合适的休息风格实现。
答案 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中注册ModelBinder
:ModelBinders.Binders.Add(typeof(DecObj), new DecObjModelBinder());
答案 1 :(得分:0)
您应该可以使用MessageHandler执行此操作。有很多关于如何在WebAPIContrib
中创建MessageHandlers的示例