IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

les messages d'erreur de <asp:ChangePassword>


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Par défaut les messages d'erreur de <asp:ChangePassword>
    Bonjour à tous,

    Je ne touche pas à l'asp.net depuis longtemps, et mes questions seront peut-être toutes bêtes, mais j'ai beau chercher, je n'arrive pas à trouver de réponse.

    Dans le webconfig, j'ai un MembershipProvider qui définit la dureté de mes mots de passe (minimum 4 caractères) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    minRequiredPasswordLength="4"
    minRequiredNonalphanumericCharacters="0"
    passwordStrengthRegularExpression="(\w{4,})*"
    Dans ma page ASP de changement de mot de passe, j'utilise le "<asp:ChangePassword>" et redéfinit son template "ChangePasswordTemplate" avec les 3 champs texte (ancien mot de passe, nouveau mot de passe et confirmation du nouveau mot de passe). Extrait (allégé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <asp:Label id="lblCurrentPassword" ... />
    <asp:TextBox id="CurrentPassword" ... />
    <asp:RequiredFieldValidator ID="CurrentPasswordRequired" runat="server"
    	ControlToValidate="CurrentPassword"
    	ErrorMessage="Ancien mot de passe obligatoire. "
    	>*</asp:RequiredFieldValidator>
     
    <asp:Label id="lblNewPassword" ... />
    <asp:TextBox id="NewPassword" ... />
    <asp:RequiredFieldValidator ID="NewPasswordRequired" runat="server"
    	ControlToValidate="NewPassword"
    	ErrorMessage="Nouveau mot de passe obligatoire"
    	>*</asp:RequiredFieldValidator>
    <asp:RegularExpressionValidator ID="NewPasswordRegularExpression" runat="server"
    	ControlToValidate="NewPassword"
    	ValidationExpression="(\w{4,})*"
    	ErrorMessage="Nouveau mot de passe pas assez complexe : 4 caractères minimum. "
    	></asp:RegularExpressionValidator>
     
    <asp:Label id="lblConfirmNewPassword" ... />
    <asp:TextBox id="ConfirmNewPassword" ... />
    <asp:RequiredFieldValidator ID="ConfirmNewPasswordRequired" runat="server"
    	ControlToValidate="ConfirmNewPassword"
    	ErrorMessage="Confirmation du mot de passe obligatoire. "
    	>*</asp:RequiredFieldValidator>
    <asp:CompareValidator ID="NewPasswordCompare" runat="server"
    	ControlToCompare="NewPassword"
    	ControlToValidate="ConfirmNewPassword"
    	Display="Dynamic"
    	ErrorMessage="Erreur sur la confirmation du mot de passe. "
    	></asp:CompareValidator>
     
    <asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal>
    Mes questions sont les suivantes :
    1. Pourquoi le champ du nouveau mot de passe ne se base pas automatiquement sur l'expression régulière du MembershipProvider ? Cela nous oblige à la repréciser dans le RegularExpressionValidator
    2. Si je renseigne un mot de passe erroné (pour l'ancien mot de passe) mais qui respecte les limitations (mettons "1111111a" par exemple), et que je rentre 2 messages identiques et respectant aussi ces règles, deux messages d'erreur s'affichent :
      • Mot de passe incorrect ou nouveau mot de passe non valide.
      • Longueur minimale du nouveau mot de passe : 4. Caractères non alphanumériques requis : 0.

      Pour le premier, c'est normal, mais pourquoi le second s'affiche-t-il ?
    3. Si j'ai bien compris, les validateurs qu'on précise dans le template sont des validateurs "côté client" (avec leur propre message d'erreur que j'ai écrit, tandis que les deux messages d'erreurs cités ci-dessus sont des messages "côté serveur", c'est bien ça ?
    4. Y'a-t-il un moyen de modifier ces messages côté serveur, pour qu'ils affichent le texte qu'on veut ?
    5. Ces messages côté serveur sont affiché grâce au "<asp:Literal ID="FailureText">". y'a-t-il moyen de mettre en forme le contenu affiché dans cette balise (par le biais d'un template par exemple) ?


    En espérant avoir été assez clair, je vous remercie par avance pour votre aide.

  2. #2
    Membre confirmé Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Par défaut
    Après moult recherches, j'ai fini par trouver la réponse aux questions 4 et 5 :
    Pour modifier l'erreur affichée dans le <asp:Literal ID="FailureText">, il suffit de mettre en place un event handler du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    protected void ChangePassword1_ChangePasswordError(object sender, EventArgs e)
    {
        string wrapErrorStart = "<div class=\"erreur\"><div class=\"titre_erreur\">Erreur</div><p>";
        string wrapErrorStop = "</p></div>";
        ChangePassword1.ChangePasswordFailureText = wrapErrorStart + ChangePassword1.ChangePasswordFailureText + wrapErrorStop;
    }
    Bêtement, je cherchais un "ChangePassword1.FailureText" alors qu'il s'agissait de "ChangePassword1.ChangePasswordFailureText"

    Comme je me doute de la réponse à la question 3, il ne me reste plus que les questions 1 et 2 sans réponse...
    L'un d'entre-vous aurait quelques lumières à m'apporter sur ce point ?

Discussions similaires

  1. Mettre les messages d'erreur apache en francais
    Par Invité(e) dans le forum Apache
    Réponses: 1
    Dernier message: 16/02/2006, 19h33
  2. Rediriger les messages d'erreur
    Par goblin dans le forum Langage
    Réponses: 3
    Dernier message: 25/12/2005, 20h04
  3. Réponses: 5
    Dernier message: 16/08/2005, 12h15
  4. [Message d'erreur] gérer les message d'erreurs
    Par heid dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2004, 14h57
  5. recuperer les messages d'erreurs de interbase
    Par devalender dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/06/2004, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo