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) :
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 minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" passwordStrengthRegularExpression="(\w{4,})*"
Mes questions sont les suivantes :
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>
- 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
- 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 ?
- 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 ?
- Y'a-t-il un moyen de modifier ces messages côté serveur, pour qu'ils affichent le texte qu'on veut ?
- 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.
Partager