繁体   English   中英

ASP.NET MVC加密查询字符串

[英]Asp.Net MVC encrypted querystring

我正在尝试在ActionResult上获取加密的查询字符串,但是参数始终为null。

我已经实现了电子邮件URL并加密了一些信息,如下所示:

string key = "r0b1nr0y";
var queryString = EncryptDecryptQueryString.Encrypt(String.Format("testId={0}&otherInfo={1}", Id, otherInfo), key);

结果是此URL参数:

?fpZG2mFDOZbuuBFccKLeu9Rzbn/I05i577IaaMSt0uztuHmWdeVIOQ==

网址是这样的:

www.test.com/MyController/MyAction?fpZG2mFDOZbuuBFccKLeu9Rzbn/I05i577IaaMSt0uztuHmWdeVIOQ==

现在,在控制器端,假定ActionResult接收一个字符串。

运行程序,当我尝试测试生成的url时,代码到达MyAction但string参数始终为null。

public ActionResult MyAction(string queryString)
{
     ... Do Stuff here...        
}

我也尝试为其创建特定的路由( 如本例所示 ),但是没有用。

routes.MapRoute(
            "RouteTest",
            "MyController/MyAction/{queryString}",
            new { controller = "MyController", action = "MyAction", queryString = "" }
        );

我可以使用Request.RawUrl获取整个网址,但我真的不明白为什么加密的字符串参数为null(或为空)。

我是否错过了某个地方的要点,或者是否对null参数值进行了解释?

它为null,因为您的方法期望您的网址以以下结尾:

?queryString=xxxxxxxx

我了解您的方法,但是您要么必须分别加密所有参数,要么使用上面显示的方法,或者为该方法编写自己的模型绑定程序,以便能够解释URL中的内容以供代码使用。

模型资料夹: https : //msdn.microsoft.com/zh-cn/library/dd410405(v= vs.100) .aspx

首先,您需要对Base64字符串进行UrlEncode,因为“ /”和“ =“在您的URL中具有特殊含义。

第二:如果没有路由,则您的URL应为:www.test.com/MyController/MyAction?queryString=[UrlEncodedBase64]具有与您的操作的参数名称匹配的查询字符串参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM