Problème, il n'y a pas de méthode:
bool ChangePassword(string newPassword);
Vous devez connaître le mot de passe actuel (qui est probablement haché et oublié).
C'est une tâche facile sur laquelle j'ai perdu trop de temps. Espérons que ce message évite à quelqu'un d'autre la douleur de se gifler le front aussi fort que moi.
Solution, réinitialisez le mot de passe au hasard et transmettez-le à la méthode de modification.
MembershipUser u = Membership.GetUser();
u.ChangePassword(u.ResetPassword(), "myAwesomePassword");
Vous ne pouvez pas modifier le mot de passe si le requireQuestionAndAnswer = "true"
J'ai du travail pour ça
Création de deux fournisseurs d'adhésion dans web.config
j'utilise le fournisseur AspNetSqlMembershipProviderReset pour réinitialiser le mot de passe car il a le requireQuestionAndAnswer = false alors que AspNetSqlMembershipProvider est le fournisseur par défaut utilisé.
j'ai écrit le code suivant pour réinitialiser le mot de passe de l'utilisateur.
public bool ResetUserPassword (String psUserName, String psNewPassword) {try {// Obtenir les détails de l'adhésion en utilisant le fournisseur d'adhésion sec avec la réponse à la question requise définie sur false.
MembershipUser currentUser = Membership.Providers["AspNetSqlMembershipProviderReset"].GetUser(psUserName,false);
//Reset the user password.
String vsResetPassword = currentUser.ResetPassword();
//Change the User password with the required password
currentUser.ChangePassword(vsResetPassword, psNewPassword);
//Changed the comments to to force the user to change the password on next login attempt
currentUser.Comment = "CHANGEPASS";
//Check if the user is locked out and if yes unlock the user
if (currentUser.IsLockedOut == true)
{
currentUser.UnlockUser();
}
Membership.Providers["AspNetSqlMembershipProviderReset"].UpdateUser(currentUser); return true;
}
catch (Exception ex)
{
throw ex;
return false;
}
}