2010-04-08 29 views
6

我目前正在使用ASP.NET登录控件。我可以设置自定义失败文本,并且如果登录失败,我可以在显示失败文本的页面上添加文字。我也在页面上有一个验证总结,我收集了所有可能发生的错误(目前只验证用户输入了登录名和密码)ASP.NET登录控制 - 我可以将FailureText添加为ValidationSummary中的项目吗?

如果我可以添加登录控件作为验证摘要一个项目的失败文本,但我不知道这是否可能?

希望计算器的大量科技人员可以给我一些指点?

谢谢!我正在用C#编码。

+0

您是按照原样使用Login控件,还是为其定义了自定义LayoutTemplate?实际上,您是否尝试在此处验证登录表单?我主要问,因为“信息丰富”的错误信息(如“你的密码不正确”)通常被认为是一个安全漏洞 - 你给了潜在的黑客一个重要的信息 - 他们有一个有效的用户名,所以只需要改变密码,作为一个通用的消息(说“提供的无效细节”)意味着他们可能需要尝试这两个。 – 2010-04-08 09:31:45

+0

嗨!感谢回复!是的,我正在使用LayoutTemplate。我所需要的只是一个用户名和一个密码 - 没有别的。目前的验证只是为了检查空的表单域。如果登录失败,我只想添加一个项目到验证摘要中,告诉用户登录失败。 – tkahn 2010-04-09 11:36:39

回答

10

我发现了一个可行的解决方案!

在页面我添加的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"> 

在我的codebehind我创建一个方法,当t这里有一个登录错误,它看起来是这样的:

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中。

0

潜在的,

您可以覆盖在ValidationSummary控件Render方法检查由登录控制报告的错误。我不确定错误是如何报告的,但是如果使用验证控件检查Page.Validators集合,将为您提供更新验证摘要输出所需的信息。

+0

感谢您的输入!就我而言,这将是太多的工作,影响不大。我只在网上的一个地方使用它,它不是一个大网站。我想我正在寻找一些易于实施的快速解决方案。另一方面,我们是不是一直在寻找那个。 ;-) – tkahn 2010-08-20 13:40:34

相关问题