2009-06-07 9 views
1

J'utilise l'adhésion ASP.NET pour gérer les utilisateurs sur mon site. Mais j'ai besoin de créer les comptes d'utilisateurs manuellement, sans l'aide de CreateUserWizard. J'ai défini des zones de texte pour les champs obligatoires, et maintenant je suis en train de configurer des validateurs.Adhésion ASP.NET valider le mot de passe

La question est: Comment faire un validateur qui verrait si le mot de passe que l'utilisateur entre dans la zone de texte est valide?

Je sais qu'il y a un format spécifique que le mot de passe doit avoir, mais cela peut être changé, et je voudrais que le validateur fonctionne même si cela change. Donc, un validateur d'expressions régulières ne fonctionnera pas (je pense)

Répondre

3

Il ne semble pas être un moyen simple. Cependant, vous pouvez utiliser la Membership.CreateUser qui prend MembershipCreateStatus param.

Si le mot de passe est valide, l'objet utilisateur créé sera nul et le MembershipCreateStatus sera mis à InvalidPassword (ou toute autre stat de création nous).

Exemple:

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

Une autre alternative est d'utiliser Membership.CreateUser (nom d'utilisateur, mot de passe) dans un try catch et d'attraper l'exception MembershipCreateUserException. Le MembershipCreateUserException.StatusCode fournit un hôte de code d'état que vous pouvez utiliser pour déterminer pourquoi l'utilisateur de création a échoué. –

0

Vous pouvez définir dynamiquement l'expression rationnelle d'un validateur d'expressions régulières.

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

Mais l'expression regex ne sont pas stockées par moi nulle part. Pour le moment, j'utilise les restrictions de mot de passe par défaut (> 6 caractères, au moins un nombre et au moins un caractère spécial). Si j'accède à mon web.config et ajoute minRequiredNonAlphanumericCharacters = "0" à mon fournisseur d'appartenances, cela modifie les restrictions de mot de passe, et je n'utilise aucune expression régulière. Je cherche quelque chose comme Membership.IsThisPasswordValid (mot de passe), mais cela ne semble pas exister. Une méthode comme celle-ci validerait le mot de passe selon ce qui est dans le web.config, et je pourrais l'appeler dans un CustomValidator – Ove

0

Quelle est votre objection à l'utilisation (une variante) de CreateUserWizard? Si c'est à faire avec des champs supplémentaires qui ont besoin, ou la mise en page il existe des moyens autour que:

  1. How to: Customize the CreateUserWizard - Consultez la section « Pour personnaliser les étapes de CreateUserWizard ».
  2. ASP.NET 2.0 CSS Friendly Control Adaptors (ceux-ci vont être intégrées dans ASP.NET 4,0)

Mais la valeur par défaut CreateUserWizard ne fait pas la validation du mot de passe du côté client, je pense que pour cette raison :(

Questions connexes