破坏ASP.Net登录控制

时间:2009-06-30 16:43:37

标签: asp.net forms-authentication login-control

帮助!我在登录页面上使用ASP.Net登录控件,但登录按钮似乎不再有效,并且未激活Authenticate事件。单击“登录”后,页面将返回“登录”页面。

web.config extract

<authorization>
 <deny users="?" />
  <allow users="*" />
</authorization>

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" timeout="15" defaultUrl="Default.aspx" />
</authentication>

我还设置了我的App_Themes文件夹的路径,以供匿名用户访问,以便图像和样式表等显示正常。

登录控件本身的DestinationUrl属性设置为“Default.aspx”并且验证正在运行,就好像我省略了Username或Password字段一样,我在页面上出现验证错误。

登录控制标记:

<asp:Login ID="Login1" runat="server" LoginButtonType="Image" 
  Width="557px" DestinationPageUrl="~/Default.aspx" 
  InstructionText="To login, please enter your username and password below."
  DisplayRememberMe="False" OnAuthenticate="Login1_Authenticate" LoginButtonImageUrl="~/App_Themes/RDCU/Images/submit.gif">
  <InstructionTextStyle Font-Names="Verdana" Font-Size="Small" ForeColor="#00A4E8" Height="40px" />
   <TitleTextStyle CssClass="header" HorizontalAlign="Left" />
   <TextBoxStyle Width="200px" />
   <LabelStyle Font-Bold="True" />
</asp:Login>

它以前有用过,但我不相信我已经改变任何东西让它停止工作。

2 个答案:

答案 0 :(得分:1)

这可能是您的验证问题。

假设您在页面上有ASP.Net验证控件,它们可能会干扰登录控件已存在的验证。尝试将验证控件的ValidationGroup属性设置为Login控件的名称。这会将它们放在与登录控件相同的验证组中,从而使验证保持统一。

这样的事情:

<asp:Login runat="server" ID="myLogin" DisplayRememberMe="false" 
     FailureText="Invalid user name or password" 
     UserNameLabelText="User Name:" TitleText=""
     LoginButtonText="Submit" TextBoxStyle-Width="175px">
</asp:Login>
<asp:CustomValidator runat="server" ID="cvTandC"
     ClientValidationFunction="validateTandC" Display="Dynamic"
     EnableClientScript="true" ErrorMessage="Please check to continue." 
     ForeColor="Red" ValidateEmptyText="true" 
     ValidationGroup="myLogin"></asp:CustomValidator>

请注意最后一行的验证组。

答案 1 :(得分:1)

我设法通过将Login控件转换为模板,更改某些属性,然后将其重置为原始布局来自行修复。

我不确定为什么这会有所作为(也许它会被迫重新编译或者某些东西)但它现在正在运作。

感谢那些试图提供帮助的人。

相关问题