我在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) { }
}
这里我有相同概念的代码,可以在另一个页面上更改用户密码,但是这里需要会话中的电子邮件/用户名和密码。
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 ){}
}
首先,我建议重构代码
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.' );");