57 votes

Comment modifier un mot de passe haché à l'aide du 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é).

127voto

mcqwerty Points 2106

C’est une tâche facile sur laquelle j’ai perdu trop de temps. Espérons que cet article sauve quelqu'un d'autre de la douleur de se gifler le front aussi fort que moi.

Solution, réinitialisez le mot de passe de manière aléatoire et transmettez-le à la méthode de modification.

 MembershipUser u = Membership.GetUser();
u.ChangePassword(u.ResetPassword(), "myAwesomePassword");
 

2voto

Mangesh Shelar Points 21

Vous n'êtes pas en mesure de changer le mot de passe si le requiresQuestionAndAnswer="true"

J'ai obtenu le travail autour de ce

Créé deux fournisseurs d'appartenance dans le web.config

je suis l'aide de la AspNetSqlMembershipProviderReset fournisseur pour mettre à zéro le mot de passe car il a la requiresQuestionAndAnswer= false où, comme AspNetSqlMembershipProvider est le fournisseur par défaut utilisé.

j'ai écrit le code suivant pour réinitialiser le mot de passe pour l'utilisateur.

public bool ResetUserPassword(String nomutilisateurps, Chaîne psNewPassword) { essayez { // Obtenir l'Adhésion des détails sur l'utilisateur à l'aide de secound fournisseur d'appartenances avec nécessaire de répondre à la question la valeur 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;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X