2

我想使用 C# 调用具有多个参数的路由器。这是我正在制作的 url

 var _email = UtilityConverter.Encrypt(Email);
            var _userId = UtilityConverter.Encrypt(Convert.ToString(UserId));

            // this.router.navigate(['search', { term: term}]);

            var _subject = "Email Verification";
            StringBuilder sb = new StringBuilder();
            sb.Append("<html>");
            sb.Append("<body>");
            sb.Append("<p>Dear ,</p>");
            sb.Append("<p>Please click the below link to verify your email.</p><br>");
            sb.Append("<a href='http://localhost:4200/Emailverification/" + _email + "/" + _userId + "'>click here</a>");
            sb.Append("<p>Sincerely,<br>-Offey</br></p>");
            sb.Append("</body>");
            sb.Append("</html>");
            return MailUtilityHelper.SendMail(Email, _subject, sb.ToString());

我的电子邮件和用户 ID 已加密,这会导致问题。

这是我的带有多个参数的路由器

 {path:'Emailverification/:email/:userid', component:EmailVerficationComponent,canActivate : [AuthguardComponent]},

任何帮助将不胜感激。在控制台中给我以下错误。

在此处输入图像描述

4

2 回答 2

3

您应该使用其他一些加密方法来加密您的电子邮件和用户 ID。我将为您提供没有特殊字符的加密和解密方法。这将解决您的问题。

       public static string Encrypt(string stringvalue, System.Text.Encoding encoding)
    {
        Byte[] stringBytes = encoding.GetBytes(stringvalue);
        StringBuilder sbBytes = new StringBuilder(stringBytes.Length * 2);
        foreach (byte b in stringBytes)
        {
            sbBytes.AppendFormat("{0:X2}", b);
        }
        return sbBytes.ToString();
    }
    public static string Decrypt(string hexvalue, System.Text.Encoding encoding)
    {
        int CharsLength = hexvalue.Length;
        byte[] bytesarray = new byte[CharsLength / 2];
        for (int i = 0; i < CharsLength; i += 2)
        {
            bytesarray[i / 2] = Convert.ToByte(hexvalue.Substring(i, 2), 16);
        }
        return encoding.GetString(bytesarray);
    }

希望这对您有所帮助,尽管它不是优化解决方案,但它可以帮助您解决问题。

于 2018-08-01T05:03:49.903 回答
1

您只向您的路由器传递了一个参数,即 Emailverification/ something

在您的情况下,您必须将两个参数都填充到 url。如果你想让路由参数为空,你应该声明另一条带有一个参数的路由和另一条没有参数的路由,这应该是

 {path:'Emailverification', component:EmailVerficationComponent,canActivate : [AuthguardComponent]},
 {path:'Emailverification/:userid', component:EmailVerficationComponent,canActivate : [AuthguardComponent]},
 {path:'Emailverification/:email', component:EmailVerficationComponent,canActivate : [AuthguardComponent]},

或者您可以在您的组件中捕获错误:EmailVerficationComponent 组件。

于 2018-07-31T14:52:08.790 回答