Реклама:
Байер Доминик Microsoft ASP.NET. Обеспечение безопасности. Мастер-класс

Рис. 2-3. Хостинг ASP.NET в IIS 6

Понятие конвейера

При получении запроса во время рабочего цикла ASP.NET для его обработки используется собственный конвейер, который состоит из управляемых модулей и обработчиков (рис. 2 4).

Модуль HttpRuntime пересылает запрос на модуль HttpApplication (1), представляющий ваше приложение ASP.NET. Приложение создает объект HttpContext, который хранит несколько объектов, например запросы, отклики и сессионные объекты. Эти объекты доступны через классы Page и Context (например, Context.Response). Затем запрос пересылается на модули (2), которые могут выполнить предварительную обрабої ку перед запуском реального обработчика (3) (обычно это страница .aspx). Затем запрос снова пересылается на модули (4), которые теперь могут выполнить заключительную обработку. После этого поток запроса перенаправляется назад на хост.

Байер Доминик Microsoft ASP.NET. Обеспечение безопасности. Мастер-класс

Рис. 2-4. Конвейер HTTP Модули HTTP

Во время передачи запроса через конвейер на нескольких стадиях обработки вызываются события. Вы можете написать код обработки этих событий и вставить собственную логику до и после выполнения операций страницы. Эту задачу можно решить путем обработки событий HttpApplication в модуле global.asax или создания класса, который реализует интерфейс IHttpModule. Проанализируем оба метода.

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

События, представленные в табл. 2-1, запускаются в приведенном порядке во время обработки запроса.

Табл. 2-1. События конвейера ASP.NET

Событие

Описание

BeginRequest

Оповещение о новом запросе

Authenticate Request

Определение идентификатора клиента

Табл. 2-1. (окончание)

Событие

Описание

Post Authenticate Request

Присоединение к клиенту информации роли

Authorize Request"

Авторизация на основе клиента и ролей

ResalveRequestCache *

Запускается после авторизации и перед запуском обработ-

 

чика. Предоставляет модулю кэширования возможность

 

проигнорировать выполнение обработчика, если результат

 

уже кэширован с предыдущего посещения страницы

MapRequestllandler'

Создание обработчика

Acquire RequestState *

Загрузка состояния сеанса

PreRequestHandlerExecute

Последнее событие, вызываемое перед выполнением обра-

 

ботчика

PostRequestHandlerExecute

Первое событие, которое запускается после выполнения

 

обработчика. Все остальные события предназначены для

 

заключительной обработки

ReleaseRequestState "

Сохранение состояния сеанса

UpdateRequestCache *

Обновление данных кэша

EndRequesI

Последнее событие, вызываемое перед передачей обрабо-

 

танного запроса назад на хост

• Существует соотпетстпующее событие Post (например, PostAuthentkateRequest).

Чтобы добавить в приложение ASP.NET логику защиты, большую часть времени вам придется работать с событиями Authentic ate Request и PostAuthentkate Request.


⇐ Предыдущая страница| |Следующая страница ⇒