Чтобы сделать жизнь еще интереснее, ASP.NET допускает неограниченную иерархию подкаталогов и правил авторизации. Например, вполне возможно иметь виртуальный каталог с правилами авторизации, подкаталог, определяющий дополнительные права, и еще один подкаталог внутри этого подкаталога, в котором определен еще ряд правил. Чтобы легче понять процесс авторизации в этом случае — представьте все правила в виде единого списка, начинающегося с каталога, в котором находится запрошенная страница. Если все эти правила обработаны и соответствие не найдено, ASP.NET начинает читать правила авторизации из родительского каталога, затем из каталога, родительского по отношению к нему и так далее — до тех пор, пока не найдет соответствие. Если никаких подходящих правил не найдено, ASP. NET в конечном итоге применяет правило <allow users="*"> из файла machine.config.
Обычно установка прав доступа к файлам на уровне каталога — самый ясный и легкий подход. Однако существует возможность ограничить доступ к определенным файлам, добавляя дескрипторы <location> в файл web.config.
Дескрипторы location размещаются вне главного дескриптора <system.web> и вложены непосредственно в базовый дескриптор <configuration>, как показано ниже:
<configuration>
<system.web>
<!-- Прочие установки пропущены. -->
<authorization>
<allow users="*" />
</authorization>
</system.web>
<location path="SecuredPage.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="AnotherSecuredPage.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
</configuration>
В этом примере открыт доступ ко всем файлам приложения за исключением SecuredPage.aspx и AnotherSecuredPage.aspx, которые имеют правило авторизации, запрещающее анонимный доступ к ним.
Для облегчения понимания и поддержки системы безопасности Web-сайта, пользователей часто объединяют в категории, называемые ролями. Вы сможете оценить значение ролей, управляя приложением масштаба предприятия, которое поддерживает сотни-тысячи пользователей. Было бы утомительно определять права доступа для каждого индивидуального пользователя, к тому же в последствии их трудно сопровождать и почти невозможно сделать без ошибок.
предыдущая следующая страница вначало главы оглавление
930