web-dev-qa-db-fra.com

Comment changer un mot de passe haché en utilisant le fournisseur d'adhésion asp.net si vous ne connaissez pas le mot de passe actuel?

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é).

57
mcqwerty

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");
127
mcqwerty

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;
    }
}
2
Mangesh Shelar