2016-02-13 58 views
-1

进程加载的链接页面检测到它:传递一些参数与链接,并同时使用C#

  1. 发送电子邮件至特定的用户和邮件正文中包含独特的联系。
  2. 同时我需要在该用户的数据库中存储该唯一链接。
  3. 当用户点击邮件正文中的链接时,我需要打开一个网页,在加载时我需要验证该链接是否与该用户具有相同的链接。
  4. 如果是,则以重置密码的形式加载页面,否则显示一些无效消息。

在上面的过程中,我只想要一个代码发送user_id和唯一的代码链接,并在ASP.net c#中加载链接页时检测它。

我用GUID创建独特的链接并成功发送邮件。加载链接页面时,我无法验证用户。 这里是我的代码:

protected void btnRECOVER_PASSWORD_Click(object sender, EventArgs e) 
     { 
      SendMail(); 
     } 

     public void SendMail() 
     { 

      login = new NetworkCredential("[email protected]", "password"); 
      client = new SmtpClient("smtp.1and1.com"); 
      client.Port = Convert.ToInt32(25); 
      client.EnableSsl = true; 
      client.Credentials = login;    
      msg = new MailMessage { From = new MailAddress("[email protected]", "nWorks Employee", Encoding.UTF8) }; 
      msg.To.Add(new MailAddress("[email protected]")); 
      msg.Subject = "Recover Password For Your nWorks Leave Management Account"; 
      msg.CC.Add(new MailAddress("[email protected]")); 
      //  msg.CC.Add(new MailAddress("*************user mail id*************")); 
      string strBody = string.Empty; 
      Guid code = Guid.NewGuid(); 

       strBody += "<html><head></head><body><p>Click the following link to recover your password.</p>"; 
       strBody += Environment.NewLine; 


       strBody += "<form action='' method='POST' name='myForm1'><a href='http://localhost:19343/LoginForm.aspx'>'" + code.ToString() + "'</form><br>"; 



      strBody += "<br/>Thanks.</body></html>"; 

      msg.Body = strBody; 

      msg.BodyEncoding = Encoding.UTF8; 
      msg.IsBodyHtml = true; 
      msg.Priority = MailPriority.Normal; 
      msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; 
      client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback); 
      string userstate = "sending......."; 
      client.SendAsync(msg, userstate); 

      string q1 = "insert into RecoverPwdStatus values(101,'" + code.ToString() + "');"; 
      MySqlCommand cmd1 = new MySqlCommand(q1, conn); conn.Open(); 
      MySqlDataReader rdr1 = cmd1.ExecuteReader(); conn.Close(); 

     } 
+0

我使用GUID创建唯一链接并成功发送邮件。加载链接页面时,我无法验证用户。 – Dipak

+0

难道你不能只发送一个电子邮件地址作为参数? – christiandev

+0

但是我必须使链接一次使用,所以我会把它放在整个用户的数据库中,并在用户点击链接时删除。如果用户下次点击同一链接,我会检查数据库中是否存在该链接,我将允许他重置密码,否则将显示您已使用相同链接重置密码。用户将不能使用一个链接重新设置密码超过一次。 – Dipak

回答

0

使用下面的建立连结的:

<a href='http://localhost:19343/ResetPasswordForm.aspx?guid="+code.ToString()+"&userid="+getUser()+"'> 

访问这些参数在加载页面的链接,做任何你想要与他们...

string v = Request.QueryString["guid"]; 
      string v1 = Request.QueryString["userid"];