解密查询字符串参数并将其映射到控制器

问题描述:

我有一层电脑板的方法类似解密查询字符串参数并将其映射到控制器

public ViewResult MyMethod(long id, string pId) 
{ 

} 

我有一个查询字符串如

?'id=' + 10 + '&pId=' + 15

我想后,使用一些加密算法进行加密我得到了一些格式的查询sting,如

gaiSXZyTAq6Z0a5TzsrdG2LjIj0moe2m4D0qQiG7zuQ= 

我从Global.asax解密它开始请求,能够解密,并设置查询字符串的所有密钥,但控制器没有能够得到它的参数值

protected void Application_BeginRequest(object sender, EventArgs e) 
     { 
      if (!string.IsNullOrEmpty(Convert.ToString(Request.QueryString))) 
      { 
       var newQueryString = SecurityEncryption.DecryptionValue(HttpUtility.UrlDecode(Convert.ToString(Request.QueryString)).Replace(" ", "+")); 
       Request.QueryString.AllKeys[0] = newQueryString; 

      } 
     } 

我想要的控制器的方法会得到它的参数值,我怎么能做到这一点?

请任何人都可以帮助我。

+0

可能重复http://stackoverflow.com/questions/603092/how-to-pass-encrypted-query-string-in-asp-net –

+1

@NachoLaborde这个问题是在asp.net中,我问它在Asp.net MVC和在这里我想得到像中间转换我原来的格式加密的查询字符串,也是我的控制器方法也得到这些参数。 – Sid

+0

好吧,你可以创建一个这样的属性http://www.dotnettrace.net/2013/09/encrypt-and-decrypt-url-in-mvc-4.html –

我发现我sollution解密我的基本控制器的

public override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    var queryStringQ = Server.UrlDecode(filterContext.HttpContext.Request.QueryString["q"]); 
if (!string.IsNullOrEmpty(queryStringQ)) 
     { 
      // Decrypt query string value 
      var queryParams = DecryptionMethod(queryStringQ); 
     } 
} 
+0

你在哪里把这个放在globax.asax文件中? –