Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы технологии ASP.NET (методичка)

.pdf
Скачиваний:
83
Добавлен:
08.03.2016
Размер:
1.01 Mб
Скачать

21

В случае использования метода передачи данных GET в HTML-коде первой страницы необходимо всего лишь изменить значение атрибута method тега <form>. Для данного атрибута требуется установить значение get. Для получения данных, введенных пользователем, мы воспользуемся свойством QueryString объекта Request. Это свойство также является коллекцией и мы можем обращаться к ее элементам просто через указание их наименований.

Другой способ работы с данными, введенными пользователем, заключается в использовании объекта Application. Он доступен для всех страниц, входящих в состав одного приложения. В данном объекте приложение может создавать свои глобальные переменные.

Представим приложение, состоящее из двух страниц. На первой размещены серверные элементы управления TextBox и Button, а на второй Label.

Для нажатия на кнопку в обработчике поместим следующий код:

Application.Clear();

Application.Lock(); Application.Add(“NAME”, TextBox1.Text); Response.Redirect(“WebForm2.aspx”);

Первый оператор очищает ранее установленные глобальные переменные. Второй оператор закрывает объект Application от изменения другим пользователем. Третий оператор создает переменную с именем NAME и приписывает ей значение, указанное пользователем в поле текстового ввода. Последний оператор заставляет браузер пользователя послать запрос серверу на отображение страницы WebForm2.aspx.

В обработчике загрузки второй страницы следует написать следующий код:

Label1.Text = “Здравствуйте, ” + Application.Get(0); Application.Unlock();

Метод Get возвращает первый элемент объект Application (нумерация начинается с нуля). Метод Unlock открывает объект Application для остальных пользователей.

ASP.NET предлагает разработчику несколько механизмов проверки достоверности, которые сами автоматически осуществляют контроль введенных пользователем данных. Причем они делают это без отправки данных на сервер. Вся проверка происходит на стороне пользователя. В качестве примера рассмотрим свойства элемента управления RangeValidator, позволяющего проверять, входит ли введенное пользователем значение в некий заранее определенный интервал допустимых значений. Вот свойства этого компонента:

ErrorMessage – текст предупреждения, которое будет отображаться на странице в случае внесения неверных данных пользователем.

ControlToValidate – имя устройства ввода данных, которое будет контролироваться компонентом проверки соответствия шаблону.

22

Type – тип данных, который должен быть введен в контролируемое поле.

MinimumValue – минимальное возможное значение.

MaximumValue – максимальное возможное значение.

Аутентификация и авторизация пользователей

При разработке сайтов для обеспечения безопасности часто используется связка из двух процедур — аутентификации и авторизации. Аутентификация позволяет приложению узнать, какой именно пользователь посетил сайт. Обычно это прием некоего пароля. Авторизация позволяет определять, какие именно Web-страницы или их категории будут доступны данному конкретному посетителю. Естественно, авторизация может проводиться только после завершения аутентификации.

В ASP.NET предусмотрено три варианта аутентификации. Разработчик может воспользоваться аутентификацией, основанной на обычной процедуре распознавания пользователя операционной системой Windows, аутентификацией на основе cookie-файлов, и аутентификацией, основанной на технологии Microsoft Passport. И конечно, разработчик может вообще не использовать проверку подлинности, но это уже удел самых простых сайтов.

Для начала рассмотрим механизм использования аутентификации, основанной на механизме опознания пользователя операционной системой Windows. В этом случае сервер будет выводить диалоговое окно, в котором пользователь введет свое имя и пароль. Введенное имя и пароль должны совпадать с учетной записью используемого домена Windows, т.е. Все пользователи сайта должны быть прописаны в операционной системе.

Второй вариант аутентификации основан на применении cookies. Когда пользователь первый раз появляется на сайте, Web-приложение запрашивает его регистрационное имя и пароль. После прохождения первичной идентификации приложение формирует cookie-файл, который записывается в локальной системе удаленного пользователя. Затем, когда пользователь будет запрашивать какую-либо Web-страницу, этот cookie-файл будет автоматически передаваться браузером на сервер, и на основе этого cookie пользователь будет автоматически распознаваться. Таким образом, мы избавляем пользователя от необходимости вводить пароль для доступа к каждой защищенной Web-странице. После завершения сеанса работы приложение может объявить созданный cookie-файл устаревшим, и при следующем появлении этого пользователя на сайте снова запросить его регистрационное имя и пароль, либо приложение может пользоваться единожды созданным cookie постоянно, опознавая пользователя самостоятельно при каждом его последующем заходе на сайт.

Третий вариант аутентификации пользователей опирается на использовании технологии Microsoft Passport. Эта технология позволяет хранить все данные каждого конкретного пользователя в одном месте. На самом деле, для аутентификации опять будет применяться cookieфайл или запрос пароля, но всю эту работу будет выполнять сервер Microsoft Passport. Запись о пользователе в базе данных этого сервера будет являться пропуском ко всем сайтам, на которые он заходит (если эти сайты в свою очередь могут использовать технологию Microsoft Passport).

Процессы аутентификации и авторизации пользователей включаются в состав Web-приложения при помощи файла Web.config. Этот файл хранит информацию о конфигурации приложения.

Файл Web.config является стандартным XML-файлом. Тело этого файла разбито по умолчанию на восемь разделов, которые отвечают за те или иные настройки приложения. Тег <autentification> устанавливает параметры, аутентификации, используемые в разрабатываемом Web-приложении.

У тега <autentification> есть обязательный атрибут mode, при помощи которого разработчик устанавливает используемый Web-приложением режим аутентификации. Данный атрибут может принимать следующие значения:

23

None — значение указывает, что Web-приложение не использует какой-либо аутентификации.

Windows – значение свидетельствует, что Web-приложение будет использовать аутентификацию, основанную на стандартном механизме распознавания пользователя операционной системы Windows.

Forms – значение указывает, что Web-приложение , будет использовать аутентификацию на основе cookie-файлов.

Passport – данное значение свидетельствует, что в Web-приложении будет использоваться

аутентификация, основанная на технологии Microsoft Passport.

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

1.Создадим новое приложение ASP.NET.

2.Добавим файл login.aspx.

3.В файле Web.config установим:

<authentication mode="Forms" />

4.На страницу Default.aspx добавляем один серверный элемент управления Label.

5.На страницу login.aspx добавляем три серверных элемента управлеия Label, два элемента TextBox и один Button.

6. В файл Default.aspx в обработчик загрузки страницы добавим следующий код:

if (User.Identity.IsAuthenticated)//если пользователь прошел процедуру аутентификации

{

Label1.Text = "Здравствуйте, " + User.Identity.Name;

//формируем приветствие на основе имени пользователя

}

else // иначе

{

Response.Redirect("login.aspx"); // перенаправляемся на страницу ввода

//логина и пароля

}

7. В файл login.aspx в обработчик нажатия кнопки добавим следующий код:

if ((TextBox1.Text == "student") && (TextBox2.Text == "student"))// если введен логин

//student и пароль student

{

System.Web.Security.FormsAuthentication.RedirectFromLoginPage (TextBox1.Text, true); /* пользователь перенаправляется на страницу, затребовавшую проведение аутентификации; в качестве первого параметра передается имя пользователя, а если второй параметр имеет

24

значение true, то созданный идентификационный cookie-файл сохраняется на машине пользователя и в

следующий визит ему не придется проходить процедуру аутентификации */

}

8. Перейдем к вкладке Default.aspx. Запустим приложение в обозревателе. Пройзойдет перенаправление на страницу ввода логина и пароля. Введем логин и пароль.

9. Нажмем на кнопку.

25

Журнал Преподавателя

Постановка задачи

Требуется разработать Журнал Преподавателя для высших учебных заведений. Журнал должен позволять выполнять преподавателям следующие функции:

1.Аутентификация в системе.

2.Просмотр оценок всех студентов выбранной группы по выбранной теме выбранной дисциплины.

3.Просмотр оценок выбранного студента из выбранной группы по выбранной дисциплине.

4.Выставление оценок.

Журнал должен соответствовать следующей структуре базы данных:

Разработка

1.Создаем в СУБД Access базу данных, соответствующую требуемой структуре. Заполняем ее данными.

2.Запускаем Microsoft Web Developer Express.

3.Создаем новый проект. Выбираем File → New Web Site.

4.В появившемся окне New Web Site вводим следующее:

26

5. Страница Default.aspx будет предназначена для аутентификации пользователя. Разместим на ней в режиме дизайна следующие серверные элементы управления: три элемента Label (надпись), два элемента DropDownList (выпадающий список), один элемент TextBox (текстовое поле), один элемент Button (кнопка), два элемента AccessDataSource (для подключения к базе данных Access). Устанавливаем желтый цвет страницы: в свойстве BgColor объекта DOCUMENT. Чтобы переместить элементы управления в нужное место на странице, устанавливаем в меню для них Layout->Position- >Absolute.

27

Для элемента TextBox устанавливаем значение Password свойства TextMode, чтобы пароль не был виден. Для элемента DropDownList, находящегося в левом верхнем углу, устанавливаем значение свойств Height и Width равными 0px, т.к. этот элемент не должен быть виден на экране.

6. В окне Solution Explorer создаем новую Web-страницу, предназначенную для просмотра и выставления оценок группы. Назовем страницу MarkTema.aspx.

28

7. Разместим на ней в режиме дизайна следующие серверные элементы управления: четыре элемента Label (надпись), три элемента DropDownList (выпадающий список), два элемента HyperLink (гиперссылка), четыре элемента AccessDataSource (для подключения к базе данных Access), один элемент GridView (таблица). Устанавливаем зеленый цвет страницы: в свойстве BgColor объекта DOCUMENT. В свойстве Title этого же объекта можно изменить название страницы. Чтобы переместить элементы управления в нужное место на странице, устанавливаем в меню для них Layout->Position->Absolute.

8.В окне Solution Explorer создаем новую Web-страницу, предназначенную для просмотра и выставления оценок студента. Назовем страницу MarkStudent.aspx.

9.Разместим на ней в режиме дизайна следующие серверные элементы управления: четыре элемента Label (надпись), три элемента DropDownList (выпадающий список), два элемента HyperLink (гиперссылка), четыре элемента AccessDataSource (для подключения к базе данных Access), один элемент GridView (таблица). Устанавливаем зеленый цвет страницы: в свойстве BgColor объекта DOCUMENT. В свойстве Title этого же объекта

можно изменить название страницы. Чтобы переместить элементы управления в нужное место на странице, устанавливаем в меню для них Layout->Position->Absolute.

29

10.В файлах MarkTema.aspx и MarkStudent.aspx для элементов HyperLink1 и HyperLink2 в

свойстве NavigateUrl устанавливаем названия страниц, на которые можно будет перейти по гиперссылке, т.е. ~/MarkStudent.aspx и ~/MarkTema.aspx соответственно.

11.В файле Web.Config внесем следующие изменения:

<authentication mode="Forms" />

Т.е. Web-приложение будет использовать аутентификацию на основе cookie-файлов.

12. В файлы MarkTema.aspx.cs и MarkStudent.aspx.cs в обработчик загрузки страницы добавим следующий код:

if (User.Identity.IsAuthenticated) // если пользователь прошел аутентификацию

Label1.Text = User.Identity.Name; // на странице отображается надпись с его именем else // иначе

Response.Redirect("Default.aspx"); // перенаправляемся на страницу аутентификации

13. На странице Default.aspx настроим источник данных AccessDataSource1 для получения все ФИО преподавателей.

Для начала выберем существующую БД и добавим ее в проект:

Затем начнем настройку элемента AccessDataSource1. Наведем на него курсор и нажмем на маленькую появившуюся справа вверху кнопочку со стрелкой:

Выберем пункт ConfigureDataSource...

Затем выберем нужную БД из имеющихся в проекте: