2009-01-09 9 views
10

Ist es möglich, das Format des Passworts zu steuern, das automatisch durch einen Aufruf von MembershipUser.ResetPassword() generiert wird?Wie kontrolliere ich das Format MembershipUser.ResetPassword()

Ich möchte bestimmte Sonderzeichen im generierten Passwort zulassen oder nicht zulassen.

Ich verwende den SqlMembershipProvider mit einem Passwort-Format von Hashed.

Danke.

+0

Warum wollen Sie Sonderzeichen begrenzen? Es gibt kaum einen vertretbaren Grund dafür und ist sehr benutzerunfreundlich. –

+1

@John Sheehan: Auf der anderen Seite hatte ich Beschwerden von Benutzern, dass das generierte Passwort Zeichen enthält, die "schwer zu finden" sind. Versuchen Sie, einem Benutzer (ohne Programmierer) mitzuteilen, dass er | oder ~ Tasten auf der Tastatur. Das Entfernen der schwer zu typisierenden Zeichen kann als benutzerfreundlich angesehen werden. Natürlich können Sie dem Benutzer sagen, dass er das Passwort kopieren und einfügen soll, aber ich habe auch Widerstand dagegen gefunden. –

+0

Sie können einfach zu verwendende Passwörter erstellen, die sicher sind, aber Sie sollten nicht einschränken, was Benutzer verwenden können. –

Antwort

1

Schauen Sie sich diesen Artikel an - Changing the autogenerated password format in the SqlMembershipProvider.

kam ich mit einem schnellen Weg, um die SqlMembershipProvider zu hacken weniger komplexen Passwörter zu generieren, und es war so einfach wie eine neue Provider-Klasse erstellen, die von SqlMembershipProvider erbt, dann die Methode Gene überschreibt.

Dies ist keine vollständig aufgelöste Lösung, aber es könnte helfen.

0

Ich hatte gehofft, dass es einige Konfigurationseinstellungen geben könnte, aber überschreiben die GeneratePassword() -Methode funktioniert für meine Situation.

Wir hatten bereits eine Crypto Utility-Klasse, die die zufälligen Passwort-Strings erzeugen würde, so dass es eine ziemlich schnelle Änderung war.

19

Möglicherweise möchten Sie dies in zwei Schritten tun, wie von Mark Fitzpatrick hier identifiziert: http://bytes.com/groups/net-asp/689452-how-reset-users-password-without-having-use-passwordrecovery#post2740740

Sie zuerst das Passwort zurücksetzen, dann sofort es nach Ihrem Geschmack in ein Format ändern. Offensichtlich wäre die Verwendung einer festen Zeichenkette wie in Marks Beispiel NICHT zu empfehlen - Sie sollten some random string generator implementieren.

user.ChangePassword(user.ResetPassword(), MyMethodToGenerateRandomPassword()); 
+1

Ich mag Ihre Lösung dazu. Ich versuchte David HAust's Lösung, aber wenn ich MembershipUser.ResetPassword() anrief, würde es mir immer noch die Mega-Krypto-Passwörter geben. – sshow

+3

+1: Dies sollte die Antwort sein. – naveen

2

Heute können Sie auch die Membership.GeneratePassword Methode verwenden und eine MinRequiredPasswordLength oder die Eigenschaft übergeben bereits in Web.config wie folgt definiert verwenden:

var newPassword = 
        // 0 = Number of non alphanumeric characters 
        Membership.GeneratePassword(Membership.MinRequiredPasswordLength, 0); 

    user.ChangePassword(user.ResetPassword(), newPassword); 
Verwandte Themen