2009-08-14 6 views
2

Quelle est la meilleure façon de valider le mot de passe et de confirmer les champs de mot de passe dans une vue fortement typée?ASP.NET MVC | Comment gérer le mot de passe pour confirmer la valeur?

Mot de passe Code de champ:

<label for="BaseUser.PasswordHash">Password</label> 
<%= Html.Password("BaseUser.PasswordHash", Model.BaseUser.PasswordHash)%> 
<%= Html.ValidationMessage("BaseUser.PasswordHash", "*")%> 

Je ne sais pas comment faire face à confirmer champ de mot de passe dans la manière de mvc. Ou simplement utiliser javascript pour valider?

+0

Consultez cette réponse à cette question: http://stackoverflow.com/questions/2450198/how-to-validate-two-properties-with-asp-net-mvc-2 –

Répondre

4

Ce type de règle de validation de l'interface utilisateur peut être effectué dans le contrôleur (contrairement à ma réponse d'origine). Téléchargez le code source de Nerddinner.com, regardez la méthode AccountController.Register où la méthode ValidateRegistration est appelée pour voir un exemple spécifique.

Il y a une promenade complète à travers du site nerddinner.com disponible en téléchargement PDF gratuit à http://tinyurl.com/aspnetmvc mais il ne va pas dans le détail pour votre question dans la promenade à travers donc il suffit de vérifier le code source comme indiqué au dessus.

Si vous souhaitez améliorer progressivement l'expérience utilisateur, vous pouvez superposer le plug-in de validation jquery dans la vue pour valider également le côté client. Rappelez-vous le danger avec seulement effectuer la validation sur le client via javascript est que tout ce que quelqu'un a à faire est d'éteindre javascript pour éviter vos règles métier et contourner une couche de votre «défense en profondeur» à l'arrêt des attaques de sécurité telles XSS et Sql Injection.

+0

Merci pour votre réponse. Comme vous pouvez le voir, j'utilise un modèle wrap pour représenter la vue. Cependant, je ne sais pas comment gérer le travail de validation de mot de passe dans mon scénario. La seule façon que je connaisse est de parcourir la liste FormCollection qui n'est évidemment pas une bonne pratique. –

+0

Vous pouvez vouloir faire cette validation particulière dans un ModelBinder personnalisé si vous ne voulez vraiment pas qu'une propriété de confirmation de mot de passe trouble votre modèle. Mais j'ai tendance à vouloir que toutes les règles commerciales/de validation soient dans Model.BaseUser ou Model.User. –

0

I javascript est le chemin à parcourir. Si vous voulez votre routine de validation sur le serveur (qu'est-ce que c'est, de toute façon? Mvc standard?), Alors bien.

Mais pourquoi forcer un aller-retour pour quelque chose d'aussi simple que "vos mots de passe ne correspondent pas". Et si quelqu'un veut "pirater" (par exemple, désactiver javascript) afin qu'ils puissent soumettre deux mots de passe qui ne correspondent pas, alors bien.

Pour le faire sur le serveur, vous auriez deux champs séparés et s'ils ne correspondent pas alors vous jetez l'erreur.

+0

merci pour votre réponse. Mon problème est je ne sais pas comment vérifier la valeur de champ de mot de passe et la valeur de champ de confirmation de mot de passe sur la vue d'inscription d'utilisateur, pas la connexion d'utilisateur. –

Questions connexes