密码更改后,MembershipProvider验证失败

时间:2017-11-23 14:58:16

标签: c# asp.net sqlmembershipprovider

我正在使用SQLMemberShipProvider。

当我输入用户名和密码时,执行以下代码membershipProvider.ValidateUser(myUserName, myPassword)并返回true,表示该用户有效。

我使用以下代码重置密码:

var username = membershipProvider.GetUser(myUserName, false);
username.ChangePassword(username.ResetPassword(), newPassword);

现在,当我输入用户名和新更改的密码时,以下内容再次执行membershipProvider.ValidateUser(myUserName, newPassword),但这次验证失败。

我不明白这一点,因为我对ValidateUser的两次调用都使用相同的提供程序。密码似乎已经改变,因为原始密码也不再有效。

密码格式经过哈希处理,IsLocked为false且IsApproved为真。

1 个答案:

答案 0 :(得分:0)

代码看起来不错。这最常发生,因为在web.config中<_p>没有将resetPassword设置为true

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
  <providers>
    <add name="SqlProvider"
      type="System.Web.Security.SqlMembershipProvider"
      connectionStringName="SqlServices"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="true"
      passwordFormat="Hashed"
      applicationName="MyApplication" />
  </providers>
</membership>

确保enablePasswordReset =&#34; true&#34;已经确定了。