ASP.NET Контроль входа в систему не выполняется последовательно при проверке подлинности

#c# #asp.net #web-config #asp.net-membership

#c# #asp.net #web-config #asp.net-членство

Вопрос:

Недавно я унаследовал 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:

Ну, я чувствую себя глупо. Оказывается, вход в систему работал нормально, если вы нажимали кнопку «Войти», однако каждый раз, когда я тестировал, я просто нажимал клавишу ввода. Событие ввода ключа фиксировалось кнопкой поиска, которая у меня была на странице, которая еще не была реализована, поэтому все, что он сделал, это отправил обратно.

Я просто обернул элемент управления входом в панель и установил DefaultButton на идентификатор кнопки входа в систему. Проблема решена.

Комментарии:

1. Именно та проблема и решение, которые у меня были!