当安全答案正确时,ASP.NET ResetPassword引发MembershipPasswordException

本文关键字:NET ASP ResetPassword 引发 MembershipPasswordException 安全 答案 | 更新日期: 2023-09-27 18:21:46

我试图实现一个问答密码重置页面,但这一行:

string tempPassword = 
    Membership.Provider.ResetPassword(username, TextBoxSecurityAnswer.Text);

正在引发MembershipPasswordException,即使传入的安全答案与用户名对应。基本异常是System.exception,它只是显示COMPlusExceptionCode,值为-532459699。

我正在使用MySql和他们的.NET Connector v6.2.5(这是我可以使用的最新版本,因为我的项目是.NET v3.5)。我的成员资格提供程序的web.config设置如下所示:

    <membership defaultProvider="MySQLMembershipProvider" hashAlgorithmType="SHA1">
        <providers>
            <clear/>
            <add name="MySQLMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" 
                connectionStringName="Membership" 
                applicationName="/" 
                passwordFormat="hashed" 
                minRequiredPasswordLength="4" 
                minRequiredNonalphanumericCharacters="0"
                requiresQuestionAndAnswer="true" />
        </providers>
    </membership>

有人知道发生了什么事吗?

当安全答案正确时,ASP.NET ResetPassword引发MembershipPasswordException

好吧,我想通了。哇,我觉得自己很笨。但也许其他人也会做同样愚蠢的事。

我直接在数据库中为有问题的帐户更改了安全答案的数据,当我这样做时,数据库中不再对安全答案进行哈希处理。我想Membership Provider试图获取数据库中的内容,假设它被散列了,但它得出的结果与提供的答案不匹配,所以它抛出了异常。有道理。