2010-04-08 20 views
6

Je travaille actuellement avec le contrôle de connexion ASP.NET. Je peux définir un texte d'échec personnalisé et je peux ajouter un littéral sur la page où le texte d'échec est affiché si la connexion échoue. J'ai aussi un résumé de validation sur la page dans laquelle je recueille toutes les erreurs qui peuvent survenir (pour le moment il suffit de valider que l'utilisateur a entré un nom d'utilisateur et un mot de passe.)Contrôle de connexion ASP.NET - puis-je ajouter FailureText en tant qu'élément dans un ValidationSummary?

Ce serait vraiment bien si je pouvais ajouter le texte de défaillance de la commande de connexion comme un élément dans le résumé de la validation, mais je ne sais pas si cela est encore possible?

Espérant que la matière grise massive de stackoverflow peut me donner quelques conseils?

Merci! Je code en C#

+0

Utilisez-vous le contrôle de connexion tel quel ou avez-vous défini un LayoutTemplate personnalisé? Y at-il réellement autre chose que le formulaire de connexion que vous essayez de valider ici? Je demande principalement parce que les messages d'erreur "informatifs" (tels que "Votre mot de passe était incorrect") sont souvent considérés comme une faille de sécurité - vous avez donné à un hacker potentiel une information importante - ils ont un nom d'utilisateur valide le mot de passe, où en tant que message générique (dites "détails non valides fournis"), il peut être nécessaire d'essayer les deux. –

+0

Salut! Merci d'avoir répondu! Oui, j'utilise un LayoutTemplate. Tout ce dont j'ai besoin de l'utilisateur est un nom d'utilisateur et un mot de passe - rien d'autre. La validation en cours consiste simplement à vérifier les champs de formulaire vides. Si la connexion échoue, je veux juste ajouter un élément au résumé de validation qui indique à l'utilisateur que la connexion a échoué. – tkahn

Répondre

10

J'ai trouvé une solution qui fonctionne!

Sur la page ajouter un CustomValidator, comme ceci:

<asp:CustomValidator id="vldLoginFailed" runat="server" ErrorMessage="Login failed. Please check your username and password." ValidationGroup="loginControl" Visible="false"></asp:CustomValidator> 

J'ai aussi un ValidationSummary qui ressemble à ceci:

<asp:ValidationSummary id="ValidationSummary" ValidationGroup="loginControl" runat="server" DisplayMode="BulletList" CssClass="validationSummary" HeaderText="Please check the following"></asp:ValidationSummary> 

Sur mon contrôle de connexion ajouter une méthode pour OnLoginError, donc il ressemble à ceci:

<asp:Login ID="loginControl" runat="server" VisibleWhenLoggedIn="false" OnLoginError="loginControl_LoginError"> 

Dans mon codebehind je crée une méthode qui est déclenchée quand t voici une erreur de connexion et il ressemble à ceci:

protected void loginControl_LoginError(object sender, EventArgs e) 
{ 
    CustomValidator vldLoginFailed = (CustomValidator)loginControl.FindControl("vldLoginFailed"); 
    vldLoginFailed.IsValid = false; 
} 

Alors, quand il y a une erreur de connexion la méthode loginControl_LoginError sera appelée. Il trouve le CustomValidator et définit IsValid sur false. Puisque le CustomValidator appartient au groupe de validation "loginControl", son message d'erreur sera affiché dans le ValidationSummary.

0

potentiellement,

Vous pouvez remplacer la méthode de rendu dans le contrôle ValidationSummary de contrôle pour les erreurs signalées par le contrôle de connexion. Je ne sais pas si les erreurs sont signalées, mais si un contrôle de validation est utilisé pour inspecter la collection Page.Validators, vous obtiendrez les informations dont vous avez besoin pour mettre à jour la sortie du résumé de validation.

+0

Merci pour votre contribution! Dans mon cas, ce serait trop de travail pour peu d'effet. J'utilise seulement ceci sur un endroit sur mon web et ce n'est pas un grand site Web. Je pense que je cherche quelque chose dans le sens d'une solution rapide et facile à mettre en œuvre. D'un autre côté, ne cherchons-nous pas toujours cela? ;-) – tkahn