更改密码后 MembershipProvider 验证失败

MembershipProvider validation fails after password change

我正在使用 SQLMemberShipProvider。

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

我使用以下代码重设了密码:

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

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

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

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

代码看起来不错。这很可能是因为您的 web.config:

中的 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>

确保已设置启用密码重置="true"。