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

时间:2014-06-14 05:31:41

标签: c# asp.net-mvc encryption url-rewriting global-asax

我有一个像

这样的控制方法
public ViewResult MyMethod(long id, string pId)
{

}

我有一个像

这样的查询字符串

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

我希望使用某种加密算法对其进行加密,之后我会以某种格式查询,例如

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;

            } 
        }

我希望Controller Method获取其参数值,我该如何实现?

请任何人帮助我。

1 个答案:

答案 0 :(得分:0)

我发现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);
        }
 }