2010-04-08 10 views
6

Aktualnie pracuję z formantem logowania ASP.NET. Mogę ustawić niestandardowy tekst niepowodzenia i mogę dodać literał na stronie, na której tekst błędu jest wyświetlany, jeśli logowanie się nie powiedzie. Mam również podsumowanie sprawdzania poprawności na stronie, na której zbieram wszystkie błędy, które mogą wystąpić (na razie tylko potwierdza, że ​​użytkownik wprowadził nazwę użytkownika i hasło. tekst awaria kontroli logowania jako pozycję w podsumowaniu walidacji, ale nie jestem pewien, czy jest to w ogóle możliwe?Kontrola logowania ASP.NET - czy mogę dodać tekst FailureText jako element w ValidationSummary?

nadzieję, że masywny umysłowego stackoverflow może dać mi jakieś wskazówki?

Dzięki!

/Thomas Kahn PS. Koduję w języku C#.

+0

Czy używasz formantu Login w obecnej postaci, czy też zdefiniowałeś dla niego niestandardowy LayoutTemplate? Czy w rzeczywistości istnieje coś więcej niż formularz logowania, który próbujesz sprawdzić tutaj? Pytam głównie dlatego, że "informacyjne" komunikaty o błędach (takie jak "Twoje hasło było nieprawidłowe") są często uważane za dziury w bezpieczeństwie - dałeś hakerowi jedną ważną informację - mają ważną nazwę użytkownika, więc trzeba tylko zmienić hasło, gdzie jako ogólna wiadomość (powiedz "Nieprawidłowe szczegóły dostarczone") oznacza, że ​​może być konieczne wypróbowanie obu. –

+0

Cześć! Dzięki za odpowiedź! Tak, używam LayoutTemplate. Wszystko czego wymagam od użytkownika to nazwa użytkownika i hasło - nic więcej. Bieżąca walidacja polega jedynie na sprawdzeniu pustych pól formularza. Jeśli logowanie się nie powiedzie, po prostu chcę dodać element do podsumowania sprawdzania poprawności, który informuje użytkownika, że ​​logowanie nie powiodło się. – tkahn

Odpowiedz

10

Znalazłem rozwiązanie, które działa!

Na stronie dodaję CustomValidator, tak:

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

Mam też ValidationSummary, który wygląda tak:

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

na moim kontroli logowania dodaję metodę OnLoginError, więc wygląda to tak:

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

W moim utworze kodu tworzę metodę, która jest wyzwalana, gdy t tu jest błąd logowania i wygląda to tak:

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

Więc gdy pojawia się błąd logowania metoda loginControl_LoginError zostanie wywołana. Znajduje właściwość CustomValidator i ustawia wartość IsValid na wartość false. Ponieważ CustomValidator należy do grupy walidacji "loginControl", jej komunikat o błędzie będzie wyświetlany w ValidationSummary.

0

Potencjalnie

Można zastąpić metodę renderowania w kontroli ValidationSummary sprawdzanie błędów zgłaszanych przez kontrolę logowania. Nie jestem pewien, czy zgłaszane są błędy, ale jeśli używana jest kontrola sprawdzania poprawności, sprawdzając stronę. Kolekcja VALIDATOR dostarczy ci informacji potrzebnych do zaktualizowania danych wyjściowych podsumowania sprawdzania poprawności.

+0

Dzięki za twój wkład! W moim przypadku byłoby to zbyt dużo pracy, aby osiągnąć niewielki efekt. Używam tego tylko w jednym miejscu w mojej sieci i nie jest to duża strona internetowa. Myślę, że szukam czegoś na wzór szybkiej poprawki, która jest łatwa do wdrożenia. Z drugiej strony, czy nie zawsze tego szukamy. ;-) – tkahn

Powiązane problemy