2009-06-07 11 views
1

Ich benutze ASP.NET Mitgliedschaft, um Benutzer auf meiner Website zu verwalten. Aber ich muss die Benutzerkonten manuell erstellen, ohne die Hilfe des CreateUserWizard. Ich habe Textfelder für die erforderlichen Felder festgelegt, und jetzt richte ich Validatoren ein.ASP.NET Mitgliedschaft validieren Passwort

Die Frage ist: Wie mache ich einen Validator, der sehen würde, ob das Passwort, das der Benutzer in das Textfeld eingibt, gültig ist?

Ich weiß, dass es ein bestimmtes Format muss das Passwort haben muss, aber das kann geändert werden, und ich möchte für den Validator funktionieren, auch wenn sich das ändert. Also wird ein Validierer für reguläre Ausdrücke nicht funktionieren (ich denke)

Antwort

3

Es scheint nicht eine einfache Art und Weise zu sein. Sie können jedoch die Membership.CreateUser verwenden, die einen MembershipCreateStatus param nimmt.

Wenn das Passwort gültig ist, wird das erstellte Benutzerobjekt null sein und der MembershipCreateStatus wird InvalidPassword eingestellt werden (oder jede andere Erstellungsstat uns).

Beispiel:

MembershipCreateStatus membershipCreateStatus; 
MembershipUser newUser = Membership.CreateUser(userName, password, email, passwordQuestion, passwordAnswer, true, out membershipCreateStatus); 

// Check if the user was created succesfully 
if (newUser == null) 
{ 
    // membershipCreateStatus contains the information why the creation was not successful 
    if (membershipCreateStatus == MembershipCreateStatus.InvalidPassword) 
    { 
     // The password doesn't match the requirements 
    } 
} 
+1

aufrufen Eine andere Alternative ist die Verwendung von Membership.CreateUser (Benutzername, Passwort) innerhalb eines try Catch und fangen die MembershipCreateUserException Ausnahme. Der MembershipCreateUserException.StatusCode gibt einen Host mit Statuscode, mit dem Sie ermitteln können, warum der Erstellungsbenutzer fehlgeschlagen ist. –

0

Sie können die Regex eines Validators für reguläre Ausdrücke dynamisch festlegen.

private void Page_Load(object sender, EventArgs e) 
{ 
    passwordValidator.ValidationExpression = someConfiguration.GetPasswordValidationExpression(); 
} 
+0

Aber der reguläre Ausdruck wird von mir nicht überall gespeichert. Im Moment benutze ich die voreingestellten Passwortbeschränkungen (> 6 Zeichen, mindestens eine Nummer und mindestens ein spezielles Zeichen). Wenn ich zu meinem web.config gehe und minRequiredNonAlphanumericCharacters = "0" zu meinem Mitgliedschaftsprovider hinzufüge, ändert das die Passwortbeschränkungen, und ich verwende keinen regulären Ausdruck. Ich suche etwas wie Membership.IsThisPasswordValid (Passwort), aber das scheint nicht zu existieren. Eine Methode wie diese würde das Passwort gemäß dem, was in der web.config ist, validieren, und ich könnte es in einem CustomValidator – Ove

0

Was ist Ihr Einwand gegen die Verwendung (eine Variante) des CreateUserWizard? Wenn es mit, um zusätzliche Felder zu tun ist, oder das Layout gibt es Möglichkeiten, um das:

  1. How to: Customize the CreateUserWizard - Überprüfen Sie den Abschnitt heraus „Um die Create Schritte anpassen“.
  2. ASP.NET 2.0 CSS Friendly Control Adaptors (diese werden in ASP.NET 4.0 gebaut werden)

Aber auch die Standard-Create nicht Client-Seite Kennwortüberprüfung tun, ich denke aus diesem Grund :(