当安全性答案正确时,ASP.NET ResetPassword会抛出MembershipPasswordException

时间:2012-01-30 05:28:58

标签: c# asp.net mysql asp.net-membership mysql-connector

我正在尝试实施问题和回答密码重置页面,但是这一行:

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>

任何人都知道发生了什么事?

1 个答案:

答案 0 :(得分:1)

好的,我明白了。哇,我觉得愚蠢。但也许别人会做同样愚蠢的事情。

我已直接在相关帐户的数据库中更改了安全性答案的数据,当我这样做时,数据库中不再对安全性答案进行哈希处理。我想成员资格提供者试图获取数据库中的内容,假设它被散列,并且它提供的任何内容与提供的答案不匹配,因此它抛出了异常。说得通。