我想仅在用户提供的问题和答案为真时重置用户密码。我使用resetpassword方法和passwordanswer参数。但仍然密码重置,但密码答案是不正确的。 :(
如果用户提供了正确的问题和答案,我该如何重置? 这是我的代码:
try
{
MembershipUser user = Membership.GetUser(Membership.GetUserNameByEmail(txtEmail.Text));
if (user != null)
{
if (user.PasswordQuestion == ddlSecurityQuestion.SelectedIndex.ToString())
{
user.ChangePassword(user.ResetPassword(txtSecurityQuestionAnswer.Text), txtNewPassword.Text);
lblError.Text = Resources.Titles.DearUser + user.UserName + Resources.Messages.PasswordRecoveryDone;
}
else
{
lblError.Text = Resources.Messages.QuestionAnswerIsInvalid;
return;
}
}
else
{
lblError.Text = Resources.Messages.EmailIsInvalid;
return;
}
}
catch
{
lblError.Text = Resources.Messages.QuestionAnswerIsInvalid;
throw;
}
但总是重置。当我的密码被破解时,我不知道如何检查密码答案,我无法获得密码。
答案 0 :(得分:0)
我发现我的重置方法有什么问题。我在web.config中将requiresQuestionAndAnswer设置为false。当此选项设置为false时,使用PasswordAnswer工作重置方法然而提供的答案是错误的。 当我将requiresQuestionAndAnswer更改为true时,如果回答错误,则此方法会抛出异常。