Опубликован: 24.01.2007 | Доступ: свободный | Студентов: 1253 / 82 | Оценка: 4.37 / 4.17 | Длительность: 14:27:00
ISBN: 978-5-94774-627-3
Лекция 4:

Настроечные параметры System.Web

Реализация аутентификации при помощи формы

Теперь давайте посмотрим на код ASP.NET, необходимый для использования аутентификации с помощью формы. Ниже приведены настроечные параметры для этого примера.

<authentication mode="Forms">
  <forms name=".SiteCookie" loginUrl="logon.aspx" protection="All"
    timeout="30" path="/" requireSSL="false"
    slidingExpiration="true">
    <credentials passwordFormat="Clear">
      <user name="James" password="HisPassword" />
      <user name="Tammy" password="HerPassword" />
    </credentials>
  </forms>
</authentication>

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

<form runat="server">
  Username: <asp:TextBox id="tbUserName" runat="server" /><br />
  Password: <asp:TextBox id="tbPassword" runat="server" /> <br />
  <asp:CheckBox id="cbPersist" text="Remember Me" runat="server" />
  <asp:Button id="btnLogin" OnClick="btnLogin_OnClick" Text="Login"
    runat="server" />
  <asp:Label id="lblResults" runat="server" />
</form>

Это простая форма ASP.NET, которая принимает имя пользователя и пароль и при нажатии на кнопку входа генерирует серверное событие. Ниже приведен код, использующийся для сравнения этих данных с именем пользователя и паролем, хранимыми в настроечном файле.

C#

<script language="C#" runat="server">
void btnLogin_OnClick(object sender, EventArgs e)
{
  if(FormsAuthentication.Authenticate(tbUserName.Text,
    tbPassword.Text)
  {
    FormsAuthentication.RedirectFromLoginPage(tbUserName.Text,
      cbPersist.Checked);
  }
  else
  {
    lblResults.Text = "Invalid Username and Password";
  }
}
</script>

VB.NET

<script language="vb" runat="server">
Sub btnLogin_OnClick(sender as object, e as EventArgs)
  If FormsAuthentication.Authenticate(tbUserName.Text, _
    tbPassword.Text) Then
    FormsAuthentication.RedirectFromLoginPage(tbUserName.Text, _
      cbPersist.Checked)
  Else
    lblResults.Text = "Invalid Username and Password"
  End If
End Sub
</script>

Давайте построчно разберем этот код.

If FormsAuthentication.Authenticate(tbUserName.Text, _tbPassword.Text) Then

Сначала выполняется проверка того, совпадают ли введенные имя пользователя и пароль с сохраненными именем пользователя и паролем. В нашем примере имена пользователей и пароли хранятся в настроечном файле, поэтому для сравнения данных используется метод FormsAuthentication.Authenticate(). В больших и более сложных приложениях имена пользователей и пароли необходимо сохранять в базе данных, в которой их можно быстро изменить. В этом случае следует создать метод поиска в базе совпадающей пары и возвращения значение true или false. Этот метод можно использовать вместо метода FormsAuthentication.Authenticate(), и наш пример будет прекрасно работать. Если метод FormsAuthentication.Authenticate() или ваш собственный возвращают значение true, выполняется следующая строка кода.

FormsAuthentication.RedirectFromLoginPage(tbUserName.Text, _cbPersist.Checked)

Она вызывает метод FormsAuthentication.RedirectFromLoginPage(), который возвращает пользователя к запрашиваемой странице (странице, с которой пользователь был перенаправлен на страницу регистрации, хранящейся в параметре строки запроса ReturnURL ), а если такой страницы нет, то к странице default.aspx. Первый передаваемый параметр – имя пользователя, а второй – логическое значение, указывающее, следует ли сохранить cookie аутентификации. Если второе значение равно true, cookie сохраняется на неопределенный срок, в противном случае срок действия cookie истекает через время, установленное в настроечном файле. Если метод FormsAuthentication.Authenticate() или собственный метод аутентификации возвращают false, дайте пользователю знать, что он должен войти заново.

Else
  lblResults.Text = "Invalid Username and Password"
End If

В этом коде задается текст надписи сообщения, которое говорит пользователю, что его имя и пароль не опознаны. Это все, что требуется от вашего веб-приложения для реализации аутентификации с помощью формы. Вот как эта аутентификация работает в вашем приложении.

  • Когда пользователи пытаются получить доступ к защищенной части приложения, они перенаправляются на страницу logon.aspx.
  • Пользователь входит на страницу logon.aspx и создается cookie аутентификации.
  • В зависимости от того, установлен ли флажок cbPersist или нет, этот cookie либо сохраняется, либо его время действия истекает через заданное количество минут.
  • Пользователь возвращается на страницу, к которой он первоначально пытался получить доступ.
Настройка аутентификации с помощью паспорта

Последним описываемым типом аутентификации является аутентификация с помощью Microsoft Passport. Microsoft Passport – это единые имя пользователя и пароль, с помощью которых пользователь может получить доступ к сайтам в интернете. Этот метод аутентификация уже используется большим количеством компаний, включая CitiBank и Monster.com. Хотя предоставление такой возможности вашим посетителям великолепно, она требует лицензирования, которое может оказаться слишком дорогим для небольших сайтов. Кроме того, этот тип аутентификация не является подходящим для сайтов интранет, на которых можно легко использовать аутентификацию Windows. Первым шагом в настройке аутентификации с использованием паспорта является установка режима аутентификации в значение Passport.

<authentication mode="Passport">
</authentication>

Раздел аутентификации включает элемент <passport>, который содержит единственное свойство с именем redirectURL. Свойство redirectURL используется для указания страницы, на которой пользователь регистрируется. Этот URL должен указывать на страницу входа Passport, которая проверяет пользователей сайта. Ниже приведен синтаксис элемента <passport>.

<authentication mode="Passport">
  <passport redirectURL="url" />
</authentication>

Если неопознанный пользователь попытается получить доступ к защищенной части веб-приложения, он будет перенаправлен на URL, указанный в свойстве redirectURL. Это единственный настроечный параметр, который требуется для установки аутентификации Passport.

Ключевые моменты <authentication>

Раздел аутентификации содержит несколько очень важных параметров. Ниже приведен список ключевых моментов, связанные с работой в разделе <authentication>.

  • Вы можете установить свойство mode раздела аутентификации на использование аутентификации Windows с помощью форм или с помощью паспорта.
  • Вы настраиваете параметры аутентификации Windows с помощью инструмента администрирования IIS.
  • Метод аутентификации с помощью формы использует для настройки различных параметров cookie аутентификации элемент <forms>.
  • Вы можете настроить и реализовать в приложении аутентификацию с помощью формы, использовав форму ASP.NET и небольшой фрагмент кода .NET.
  • Метод аутентификации с помощью паспорта использует для настройки расположения страницы регистрации паспорта элемент <passport>.
Геннадий Щербаков
Геннадий Щербаков

В начале года получил код dreamspark  H4RQ9-QJ6FD-YJWJT-P6FVF-HGXQZ. При  его вводе- сообщение что он просрочен.