Обнаруживает ли FormsAuthenticationModule…? - PullRequest
3 голосов
/ 14 мая 2009


FormsAuthenticationModule используется для отслеживания информации о пользователях и ролях с использованием зашифрованных файлов cookie.

Но содержит ли этот модуль также код, который фактически определяет, имеет ли пользователь, запрашивающий веб-страницу, билет для проверки подлинности с помощью форм, и, если нет, перенаправляет пользователя на страницу входа или действительно UrlAuthorizationModule , который сообщает FormsAuthenticationModule перенаправить неавторизованного / неаутентифицированного пользователя на страницу входа в систему?


1017 * спасибо *

Ответы [ 2 ]

4 голосов
/ 14 мая 2009

Как ни странно, я только что исследовал это на этой неделе.

Оказывается, что FormsAuthenticationModule действительно выполняет перенаправление в обработчике событий EndRequest. Однако, это не решает, что перенаправление должно произойти. Он выполняет перенаправление, если код состояния ответа 401 (не авторизован).

UrlAuthorizationModule - это место, где принимается решение (как упомянуто в другом ответе), но все, что он делает, это указывает, что запрос не авторизован, устанавливая код состояния ответа 401.

Итак, фактически два согласованных модуля обеспечивают перенаправление на страницу входа.

3 голосов
/ 14 мая 2009

Согласно документации, FormsAuthenticationModule только

Устанавливает личность пользователя для приложения ASP.NET, когда включена проверка подлинности с помощью форм.

Однако, оглядываясь в другом месте (пропускает Erv за указание на это), модуль проверки подлинности форм затем отвечает за перенаправление пользователя на страницу входа в систему путем подключения к приложению EndRequest Событие

Это означает, что он не имеет ничего общего с ролями - роли обрабатываются с помощью RoleManagerModule

Таким образом, UrlAuthorizationModule использует модуль аутентификации (т. Е. Forms, Passport / Live, Windows и т. Д.) И поставщика ролей (используя подходящий модуль ролей) ), которые настроены в веб-конфигурации для принудительного доступа, и если CheckUrlAccessForPrinciple , который фактически проверяет права доступа пользователей, возвращает значение false, возникает ошибка 401, которая затем возвращается в ASP.NET для обработки.

Затем приложение вызывает событие EndRequest, которое регистрируется модулем FormsAuthenticationModule, который, наконец, перенаправляет пользователя на страницу входа по умолчанию, определенную в разделе проверки подлинности форм в файле web.config.

...