Элемент управления входом в систему ASP.NET — могу ли я добавить FailureText в качестве элемента в ValidationSummary?

В настоящее время я работаю с элементом управления входом в систему ASP.NET. Я могу установить пользовательский текст ошибки и добавить литерал на страницу, где отображается текст ошибки, если вход не удается. У меня также есть сводка проверки на странице, в которой я собираю все ошибки, которые могут возникнуть (на данный момент она просто проверяет, что пользователь ввел имя для входа и пароль.

Было бы очень хорошо, если бы я мог добавить текст ошибки элемента управления входом в качестве элемента в сводку проверки, но я не уверен, что это вообще возможно?

Надеетесь, что огромные умственные способности stackoverflow могут дать мне несколько советов?

Спасибо!

/Томас Кан П.С. Я кодирую на С#.


person tkahn    schedule 08.04.2010    source источник
comment
Вы используете элемент управления Login как есть или определили для него собственный шаблон LayoutTemplate? Есть ли на самом деле что-то большее, чем форма входа, которую вы пытаетесь проверить здесь? Я спрашиваю главным образом потому, что информативные сообщения об ошибках (такие как Ваш пароль был неверным) часто считаются дырой в безопасности — вы дали потенциальному хакеру одну важную информацию — у них действительное имя пользователя, поэтому нужно изменить только пароль, где как общее сообщение (скажем, предоставлены неверные данные) означает, что им, возможно, придется попробовать оба варианта.   -  person Zhaph - Ben Duguid    schedule 08.04.2010
comment
Привет! Спасибо за ответ! Да, я использую LayoutTemplate. Все, что я требую от пользователя, это имя пользователя и пароль - ничего больше. Текущая проверка предназначена только для проверки пустых полей формы. Если вход не удался, я просто хочу добавить элемент в сводку проверки, который сообщает пользователю, что вход не удался.   -  person tkahn    schedule 09.04.2010


Ответы (2)


Я нашел решение, которое работает!

На странице я добавляю CustomValidator, например:

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

У меня также есть ValidationSummary, который выглядит так:

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

В моем элементе управления входом я добавляю метод OnLoginError, поэтому он выглядит так:

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

В моем отделенном коде я создаю метод, который запускается при ошибке входа в систему, и он выглядит так:

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

Поэтому при ошибке входа будет вызван метод loginControl_LoginError. Он находит CustomValidator и устанавливает для IsValid значение false. Поскольку CustomValidator принадлежит к группе проверки «loginControl», его сообщение об ошибке будет отображаться в ValidationSummary.

person tkahn    schedule 20.08.2010

Потенциально,

Вы можете переопределить метод Render в элементе управления ValidationSummary, проверяя ошибки, о которых сообщает элемент управления входом в систему. Я не уверен, как сообщается об ошибках, но если используется контроль проверки, проверка коллекции Page.Validators даст вам информацию, необходимую для обновления вывода сводки проверки.

person brumScouse    schedule 05.08.2010
comment
Спасибо за ваш вклад! В моем случае было бы слишком много работы для небольшого эффекта. Я использую это только в одном месте в моей сети, и это не большой сайт. Я думаю, что ищу что-то вроде быстрого исправления, которое легко реализовать. С другой стороны, разве мы не всегда ищем это? ;-) - person tkahn; 20.08.2010