我在asp.net c#中重置密码时遇到问题

问题描述 投票:0回答:1

我在asp.net c#代码中重置密码时遇到问题,我正在发送指向用户电子邮件的链接(包含用户电子邮件和用户名),并且通过单击该电子邮件,需要用户重置密码页面,但并没有重置密码,任何人都可以通过以下代码帮助我吗?

我正在从通过电子邮件接收的URL中获取电子邮件地址。

这是我的代码:

TextBox_LoginID.Text = emailID;

protected void Button2_Click(object sender, EventArgs e)
{
    try
    {
        string email = "", passwd = "", passwdRe = "";
        if (!string.IsNullOrEmpty(TextBox_LoginID.Text))
        {
            email = TextBox_LoginID.Text;   
        }
        else
        {
            ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", @"alert('Dear User: Your email address is required.' );", true);
            return;
        }

        if (!string.IsNullOrEmpty(TextBox1.Text.Trim()) && !string.IsNullOrEmpty(TextBox2.Text.Trim()))
        {
            passwd = TextBox1.Text.Trim();
            passwdRe = TextBox2.Text.Trim();

            if (passwd != passwdRe)
            {
                ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", @"alert('Dear User: Your password is not matching.' );", true);
            return;
            } 
        }

        if (email != null && (passwd == passwdRe) != null)
        {
            MembershipUser User = Membership.GetUser(TextBox_LoginID.Text);
            object UserGUID = User.ProviderUserKey;

            Session["id"] = UserGUID;

            string EncriptPassword = ED.EncryptDycrpt.EncryptString(TextBox1.Text, "thskjalskdjhal");
            int rec = Acount.Jobs_UpdateAccountSetting(TextBox_LoginID.Text, EncriptPassword, Convert.ToInt32(Session["id"]), EncriptPassword);
            if (rec > 0)
            {
                Session["Password"] = TextBox1.Text;
                ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", @"alert('Dear User: Your password has been successfully changed.' );", true);
            }
            else
            {
                ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", @"alert('Password is Incorrect.');", true);
                return;
            }
        }
        else
        {
            ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", @"alert('Dear User: Your current password is incorrect.');", true); return;
        }
    }
    catch (Exception) { }
}

enter image description here

这里我有相同概念的代码,可以在另一个页面上更改用户密码,但是这里需要会话中的电子邮件/用户名和密码。

protected void Button2_Click(object sender, EventArgs e)
    {
        try
        {
            string CurrentPassword = Session["Password"].ToString();
            string Emails = Session["Email"].ToString();
            if (CurrentPassword.Equals(TextBox1.Text))
            {
                // Response.Write("<script type='javascript/txt'>alert('Dear User: your current & new password is same.' );</script>");
                ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", @"alert('Dear User: Your current and new password are same.' );", true);
                return;
            }
            if (CurrentPassword == TextBox_CurPswd.Text && Emails == TextBox_LoginID.Text)
            {
                string EncriptPassword = ED.EncryptDycrpt.EncryptString(TextBox1.Text, "thskjalskdjhal");
                int rec = Acount.Jobs_UpdateAccountSetting(TextBox_LoginID.Text, EncriptPassword, Convert.ToInt32(Session["id"]), EncriptPassword);
                if (rec > 0)
                {
                    Session["Password"] = TextBox1.Text;
                    // Response.Write("<script type='javascript/txt'>alert('Dear User: Your password has been successfully changed.' );</script>");
                    ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", @"alert('Dear User: Your password has been successfully changed.' );", true);
                    Sendemail(Session["Email"].ToString(), Session["Name"].ToString(), TextBox1.Text);
                }
                else
                {
                    // Response.Write("<script type='javascript/txt'>alert('Dear User: Your Login ID or password is Incorrect.' );</script>");
                    ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", @"alert('Login ID or password is Incorrect.');", true);
                    return;
                }
            }
            else
            {
                ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", @"alert('Dear User: Your current password is incorrect.');", true); return;
                //  Response.Write("<script type='javascript/txt'>alert('Dear User: Sorry Current login ID or current password is incorrect' );</script>");
            }
        }
        catch (Exception ){}
    }
c# asp.net textbox passwords alert
1个回答
0
投票

首先,我建议重构代码

void SendMessage(string text) {
   ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", text, true);
}

protected void Button2_Click(object sender, EventArgs e)
{
   var email = TextBox_LoginID.Text;
   var passwd = TextBox1.Text.Trim();
   var passwdRe = TextBox2.Text.Trim();

   if(string.IsNullOrEmpty(email))
   {
      SendMessage(@"alert('Dear User: Your email address is required.' );");
      return;
   }

   if(passwd != passwdRe)
   {
      SendMessage(@"alert('Dear User: Your password is not matching.' );");
      return;
   }

   var User = Membership.GetUser(email);
   var UserGUID = User.ProviderUserKey;
   var UserGUIDInt = Convert.ToInt32(UserGUID);
   Session["id"] = UserGUID;

   var seed = "thskjalskdjhal";
   var EncriptPassword = ED.EncryptDycrpt.EncryptString(passwd, seed);
   var rec = Acount.Jobs_UpdateAccountSetting(email, EncriptPassword, UserGUIDInt, EncriptPassword);

   if (rec <= 0)
   {
      SendMessage(@"alert('Password is Incorrect.');");
      return;
   }

   Session["Password"] = passwd;
   SendMessage(@"alert('Dear User: Your password has been successfully changed.' );");

}

然后您可以在下面代码的错误部分放置断点和记录器。

也许您想知道EncriptPassword是否已加密密码,rec的结果是什么,是否被调用警报,等等...

   var EncriptPassword = ED.EncryptDycrpt.EncryptString(passwd, seed);
   var rec = Acount.Jobs_UpdateAccountSetting(email, EncriptPassword, UserGUIDInt, EncriptPassword);

   if (rec <= 0)
   {
      SendMessage(@"alert('Password is Incorrect.');");
      return;
   }

   Session["Password"] = passwd;
   SendMessage(@"alert('Dear User: Your password has been successfully changed.' );");
© www.soinside.com 2019 - 2024. All rights reserved.