Таким образом, в большинстве приложений вы будете использовать собственные хранилища имен и паролей пользователей, и большей частью, они будут находиться в базах данных вроде SQL Server. В ASP.NET 1.х вам приходилось реализовывать такие сценарии самостоятельно. В форме регистрации вы должны были подключаться к базе данных, проверять наличие пользователя, сравнивать введенный пароль с хранящимся в базе, и затем вызывать FormsAuthentication.RedirectFromLoginPage, если имя пользователя и пароль были указаны корректно. Эта техника демонстрируется в следующем примере, в котором предполагается, что вы написали функцию MyAuthenticate, которая подключается к базе данных SQL Server и читает соответствующую запись о пользователе. Он возвращает true, если введенное имя и пароль совпали с одним из хранящихся в базе данных.

protected void LoginAction_Click(object sender, EventArgs e)
{
  Page.Validate();

  if (!Page.IsValid) return;

  if (this.MyAuthenticate(UsernameText.Text, PasswordText.Text))
  {
    FormsAuthentication.RedirectFromLoginPage(UsernameText.Text, false);
  )
  else
  {
    LegendStatus.Text = "Invalid username or password!";
  }
}

К счастью, ASP.NET 2.0 предлагает готовую к использованию инфраструктуру, а также полный набор элементов управления, связанных с безопасностью, которые делают все это за вас. Каркас Membership API включает хранилище данных на базе SQL Server, в которое записываются пользователи и роли, а также функции для проверки имен и паролей, без необходимости знания подробностей устройства лежащей в основе базы данных, как вы увидите в главе 21. Более того, эта инфраструктура полностью расширяема за счет пользовательских поставщиков, речь о которых пойдет в главе 26.

 

предыдущая    следующая страница    вначало главы    оглавление

846

Hosted by uCoz