【问题标题】:asp.net membership: how to check if password answer is correct when password hashedasp.net 会员资格:如何在密码散列时检查密码答案是否正确
【发布时间】:2014-08-12 00:26:42
【问题描述】:

只有当用户提供的问题和答案为真时,我才想重置用户的密码。我使用带有 passwordanswer 参数的 resetpassword 方法。但仍然总是重置密码,但是密码答案不正确。 :(

如果用户提供了正确的问题和答案,我如何才能重置? 这是我的代码:

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;
    }

但总是重置。当我的密码经过哈希处理且无法获取密码时,我不知道如何检查密码答案。

【问题讨论】:

    标签: asp.net asp.net-membership reset-password


    【解决方案1】:

    我发现我的重置方法有什么问题。我在 web.config 中将 requiresQuestionAndAnswer 设置为 false。当此选项设置为 false 时,使用 PasswordAnswer 重置方法,但提供的答案是错误的。 当我将 requiresQuestionAndAnswer 更改为 true 时,如果答案错误,此方法会引发异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      相关资源
      最近更新 更多