mvc编码/解码查询字符串

我正在开发一个asp.net mvc 6应用程序,作为应用程序的一部分,我们将发送电子邮件,其中包含一个用户可以点击的链接,将它们发送到特定的操作方法。 一份电子邮件链接的一个例子是mvc编码/解码查询字符串

http://identity.platform:7000/account/register?emailinvitation=true&[email protected]

然后会去的AccountController注册操作方法:

Register(string userName, bool emailInvitation=false, string email="") 

我想什么是做一个碱基64编码的URL,所以用户不会再试图手动改变任何参数,所以我们有一个链接,如

http://identity.platform:7000/account/register?url=ZW1haWxpbnZpdGF0aW9uPXRydWUmZW1haWw9eWVyZ0B0ZXN0LmNvbQ==

所以在我的MVC应用程序,流量为

  1. 接收请求
  2. 检查,如果存在需要进行解码
  3. 如果这样解码,并发送URL参数到适当的控制器/操作方法

我的问题是,我应该拦截请求并解码它吗?如果这种情况发生在路由中,或者稍后发生?然后,我如何重定向到具有适当参数的操作方法

回答:

在服务器上为特定邀请生成一个GUID,然后在电子邮件中发送该GUID而不是参数。

您还需要为接受GUID字符串的Register操作方法重载。

Register(string guid) { 

}

它将从数据存储获取链接的详细信息(如电子邮件地址),然后继续按正常的过程。

与base64不同,任何人都无法反转它并发现参数,并且用户很难猜测另一个有效的GUID。您不必担心编码和解码,您可以轻松地制作一次性令牌,这可能对您的业务流程有所帮助。另一个好处是,您不会收到敏感数据,例如服务器日志或用户浏览历史记录中的电子邮件地址,或通过HTTP传输(如您的示例URL)。

以上是 mvc编码/解码查询字符串 的全部内容, 来源链接: utcz.com/qa/263253.html

回到顶部