ASP.NET登录控件不一致地进行身份验证

时间:2011-10-19 21:24:45

标签: c# asp.net web-config asp.net-membership

我最近从另一个程序员那里继承了一个需要整合两个数据库的ASP.NET项目。在合并它们并在代码中修复产生的问题后,我删除了aspnet成员资格表,然后使用aspnet_regsql向导重新创建它们。我创建了几个用户和角色,在我的应用程序中,使用标准的asp.net登录控件可以很好地登录。然后我退出并尝试再次登录,但它无效。

为了查明问题,我在事件LoggingIn,Authenticate和LoggedIn中设置了断点,并且不知道这些事件都没有被触发。页面将验证,但如果您输入正确的凭据,它似乎只是回发而不会触发任何登录事件。

最终我感到沮丧,转而采取其他措施。然后今天(第二天)我进来再次检查,不知怎的,它让我第一次登录。我试图注销并重新登录,我得到了同样的问题。验证,但没有身份验证。

以下是我的登录控件的代码:

<asp:Login ID="Login1" runat="server" UserNameLabelText="Username:" PasswordLabelText="Password:" OnLoggedIn="Login1_LoggedIn"></asp:Login>

Login1_LoggedIn代码隐藏:

protected void Login1_LoggedIn(object sender, EventArgs e)
{
    if (Roles.IsUserInRole(Login1.UserName,"Administrator"))
        Response.Redirect("~/Admin/Default.aspx");
    else if (Roles.IsUserInRole(Login1.UserName,"Appointment Administrator"))
        Response.Redirect("~/ApptReq/Management/ManageEntities.aspx");
}

Web.config成员资格部分:

  <system.web>
<authentication mode="Forms">
  <forms loginUrl="Login.aspx" timeout="60" cookieless="UseCookies" name="Test" slidingExpiration="true" path="/"></forms>
</authentication>
<roleManager enabled="true">
  <providers>
    <clear />
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="test" applicationName="Test" />
  </providers>
</roleManager>
<membership defaultProvider="AspNetSqlMembershipProvider">
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="test" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="Test" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" />
  </providers>
</membership>

我疯狂地试图弄清楚这件事,所以任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

我感觉很蠢。如果你单击“登录”按钮,那么结果是登录工作正常,但是每次我测试时我只是按Enter键。回车键事件是通过我在页面上的搜索按钮捕获的,该搜索按钮尚未实现,所以它所做的只是回发。

我只是将登录控件包装在一个面板中,并将DefaultButton设置为登录按钮的ID。问题解决了。

相关问题