• Microsoft .NET
  • ASP.NET
  • ASP.NET AJAX: Отключение пользовательского интерфейса во время выполнения частичного постбэка

Аутентификация в ASP.NET - Forms-аутентификация

ОГЛАВЛЕНИЕ

 

Forms-аутентификация

При использовании Forms-аутентификации запрос параметров регистрации (например, логина и пароля) происходит в web-форме. Регистрационная страница указывается в файле Web.config. При первом обращении к защищаемым страницам ASP.NET перенаправляет пользователя на страницу для ввода пароля. При успешной регистрации аутентификационные данные сохраняются в виде cookie и при повторном обращении к защищенным страницам регистрация не требуется.
      Для того, чтобы использовать Forms-аутентификацию в файле Web.config в корневой папке приложения нужно указать страницу для ввода пароля:

<authentication mode="Forms">
    <forms loginUrl="Login.aspx" />
</authentication>

      При попытке просмотра защищенной страницы ASP.NET проверяет, есть ли аутентификационных cookie в запросе. Если cookie нет, то запрос перенаправляется на страницу для регистрации, если есть - ASP.NET дешифрует cookie и извлекает из него регистрационную информацию.

      На форме находятся поля для ввода логина и пароля и флажок для сохраняемой регистрации. При нажатии кнопки "Войти" происходит поиск пользователя с таким логином и паролем. Если такой пользователь найден, вызывается функция FormsAuthentication.RedirectFromLoginPage (), в которой указывается идентификатор пользователя и флаг для сохраняемой регистрации. Если же нет - выводится сообщение об ошибке.

protected void btnLogin_Click(object sender, System.EventArgs e)
{
   if (!IsValid) // проверяем правильность введенных данных
      return;

   OleDbConnection connection = GetDbConnection();

   try
   {
      connection.Open();

      OleDbCommand command = new OleDbCommand(string.Format("SELECT id FROM Customers WHERE login='{0}' AND password='{1}'", login, password), connection);

      OleDbDataReader reader = command.ExecuteReader();
      if (!reader.Read()) // пароль или логин неверны
      {
         lblError.Text = "Неверный пароль - попробуйте еще раз";
         return ;
      }

      string id = return reader.GetInt32(0).ToString();

      FormsAuthentication.RedirectFromLoginPage(id, chkbRememberLogin.Checked);
   }
   catch (OleDbException ex)
   {
      lblError.Text = "Ошибка базы данных";
   }
   finally
   { 
      connection.Close();
   }
}