2008-11-13 8 views
57

Problem, gibt es keine Methode:Wie ändern Sie ein Hash-Passwort mit asp.net-Mitgliedschaftsanbieter, wenn Sie das aktuelle Passwort nicht kennen?

bool ChangePassword(string newPassword); 

Sie haben das aktuelle Passwort kennen (was wahrscheinlich gehasht und vergessen).

+0

sollten Sie Ihre Frage trennen und eine Antwort hinzufügen. –

+0

@mcqwerty, jetzt haben wir Ihre Antwort getrennt, sollten Sie Ihre eigene Antwort "akzeptieren" – harriyott

+0

Netter Job, habe ich dies mit unserer Version des ChangePassword-Steuerelement (Admin Passwort für die Benutzer ändern);) – CheGueVerra

Antwort

126

Dies ist eine einfache, die ich zu viel Zeit verschwendete. Hoffentlich rettet dieser Beitrag jemand anderem den Schmerz, ihre Stirn so hart zu schlagen wie ich.

Lösung, setzen Sie das Passwort nach dem Zufallsprinzip und übergeben Sie das in der Change-Methode.

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

Hey, komm schon. Nicht für die Beantwortung Ihrer eigenen Frage Downvote. Die FAQ fördert das. Siehe http://stackoverflow.com/questions/18557/how-does-stackoverflow-work-the-unofficial-faq#119658 – DOK

+0

Die Down-Abstimmung (nicht ich!) War, bevor die Antwort hier verschoben wurde. Zuvor hieß es, dass die Antwort in der Frage lag. Ich bin nicht so begeistert von Leuten, die gerade SO beigetreten sind - es ist viel besser, sie zu bearbeiten, um ihnen zu helfen. – harriyott

+0

Ja und er bekommt auch das hübsche Abzeichen !! – CheGueVerra

2

Sie sind nicht in der Lage, das Passwort zu ändern, wenn der requiresQuestionAndAnswer = "true"

ich die Arbeit um erhielt diese für

Erstellt zwei Mitgliedschaftsanbieter in web.config

Ich benutze den AspNetSqlMembershipProviderReset-Provider zum Zurücksetzen des Passworts, da es den RequiresQuestionAndAnswer = false hat, wobei AspNetSqlMembershipProvider der Standardanbieter ist, der verwendet wird.

Ich schrieb den folgenden Code, um das Passwort für den Benutzer zurückzusetzen.

public bool ResetUserPassword (String psUserName, String psNewPassword) { versuchen { // Mitgliedschaft Benutzerdaten mit den erforderlichen Frage Antwort auf false gesetzt mit secound Mitgliedschaft Anbieter.

 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; 
    } 
} 
Verwandte Themen