【发布时间】:2019-05-24 14:08:19
【问题描述】:
目前我正在向 asp.net 核心控制器发送加密请求。以下是请求体结构:
{
"body": "pEbXVvl1ue95eGQywK/q80cGHjYk+2VNPYEgnRgU+vI="
}
在此之前我已经实现了过滤器IActionFilter 所以在OnActionExecuting(ActionExecutingContext context) 我解密上面提到的请求正文(正文密钥)
解密后,我得到解密后的请求体如下:
{
"Urno":"URN123456"
}
解密后,我想将解密后的请求(上面提到的"Urno":"URN123456")主体传递给控制器
我曾尝试将字符串转换为字节而不是将其传递给Request.body,但没有成功:
public void OnActionExecuting(ActionExecutingContext context)
{
var request = context.HttpContext.Request;
request.EnableRewind();
request.Body.Position = 0;
using (var reader = new StreamReader(request.Body))
{
var bodyString = reader.ReadToEnd(); //{ "body": "pEbXVvl1ue95eGQywK/q80cGHjYk+2VNPYEgnRgU+vI="}
if (bodyString != "")
{
var data = JObject.Parse(bodyString);
var key = data.GetValue("body");
var keybytes = Encoding.UTF8.GetBytes("808080808080808011");
var iv = Encoding.UTF8.GetBytes("8080808080808080111");
var encrypted = Convert.FromBase64String(key.ToString());
var decriptedFromJavascript = DecryptStringFromBytes(encrypted, keybytes, iv); //{ "Urno":"URN123456"}
byte[] bytes = Encoding.ASCII.GetBytes(decriptedFromJavascript);
request.Body = new MemoryStream(bytes); // here i am trying to change request body
}
}
}
// controller
[HttpPost("[action]")]
public async Task<string> GetInvestorUrno(Urnoinvestor InfoReq){
}
// class
public class Urnoinvestor
{
public string Urno{ get; set; }
}
我想更改请求正文并将解密后的请求传递给控制器
【问题讨论】:
-
初始请求使用了什么加密?您需要知道这一点才能解密信息。
-
我已经解密了请求现在我想更改请求正文
-
您看到的具体问题是什么?错误消息或空白页?
-
Urnoinvestor InfoReq 为空而不是 { "Urno":"URN123456"} 没有错误
标签: c# asp.net-core