Search code examples
c#asp.netsqlmembershipprovider

MembershipProvider validation fails after password change


I am using an SQLMemberShipProvider.

When I enter my username and password the following code is executed membershipProvider.ValidateUser(myUserName, myPassword) and returns true indicating that the user is valid.

I reset the password with the following code:

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

Now when I enter my username and the new changed password, the following executes again membershipProvider.ValidateUser(myUserName, newPassword), but this time the validation fails.

I don't understand this, as I am using the same provider for both calls of ValidateUser. The password seemed to have changed as the original password is no longer valid as well.

The password format is hashed, IsLocked is false and IsApproved is true.


Solution

  • Code looks good. This is occuring most porbably because resetPassword is not set to true in your web.config:

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

    Ensure that enablePasswordReset="true" is set.