Wie man nicht ASP.Net Mitgliedschaft Sicherheit Frage verwenden und für benutzerdefinierte Passwort-Recovery-Antwort?

StackOverflow https://stackoverflow.com/questions/920334

Frage

Ich will nicht die Sicherheitsfrage haben und Antwort-Funktion, dass ASP.Net Mitgliedschaftsanbieter geben, aber ich will eine verlorene / Passwort vergisst Seite aktivieren.

Diese Seite wäre, wenn ein Benutzer seine / ihre E-Mail-Adresse und eine E-Mail an diese Adresse würde gesendet eingeben würde, wenn der Benutzer registriert wurde, für sie ihr Passwort über einen Link zu dieser registrieren E-Mail-Adresse gesendet zurücksetzen

Ich habe die benutzerdefinierte Tabelle erstellt solche Anfragen zu verfolgen, die Zufallstaste auf die Anforderung zugewiesen sowie ein Ablaufdatum auf der Anfrage. Jedoch in den Code zu schreiben, um tatsächlich das Kennwort zurückzusetzen, wurde mir klar, dass es keine Methode zu sein scheint, die so etwas wie Resetpassword tut (E-Mail, newPassword), ohne dass die Sicherheit Q & A-Bit verwenden (was ich nicht haben).

Gibt es eine Möglichkeit, einfach das Kennwort eines Benutzers über eine in Membership-Funktion eingebaut zurücksetzen?

Wenn nicht, wie würde ich dies getan erhalten müssen?

Vielen Dank im Voraus für jede Hilfe gegeben. -Nissan

War es hilfreich?

Lösung

Was ich am Ende dabei war das folgende

public string ResetPassword(string email)
        {
            var m_userName = Membership.GetUserNameByEmail(email);
            var m_user = Membership.GetUser(m_userName);
            return m_user.ResetPassword();
        }

Dann habe ich eine neue Methode, um diesen Wert zu verwenden, um das Passwort zu ändern

public bool ChangeLostPassword(string email, string newPassword)
    {
        var resetPassword = ResetPassword(email);
        var currentUser = Membership.GetUser(Membership.GetUserNameByEmail(email), true);
        return currentUser.ChangePassword(resetPassword, newPassword);

    }

Andere Tipps

Warum Sie diese Optionen nicht in web.config ändern?

         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"

in

<membership>
   <providers>
      <clear/>
      <add name="AspNetSqlMembershipProvider" ...
      ..........
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top