Реклама:

Декларативная проверка Вы также можете декларативно выполнить авторизацию в странице и на уровнях папки. Это реализуется в элементе <authorization> файла web.config. Путем добавления элементов <allow> и <deny> в раздел авторизации вы указываете, какие пользователи и роли имеют доступ к вашему приложению.

Можно использовать специальный символ, например, знак вопроса (?), который указывает не аутентифицированных пользователей, или звездочку (*), означающую всех пользователей. Если вы хотите разрешить доступ только аутентифицированпым пользователям, можете использовать настройку

<authoiizalion -

<deny users="?"/> </auti)ürization>

Если же вы хотите предоставить доступ для ролей HR и .Safes, а также пользователю Dom, можете использовать настройку

<authorization>

<allow roles="HR,Sales"/>

<aliow users="Dom"/>

<deny users="*'7> </authorization>

ВНИМАНИЕ! Если вы используете элемент <al\ow>, всегда добавляйте в конец списка доступа элемент <deny users="'/>. В противном случае доступ получают все пользователи, поскольку в глобальном файле web.config содержится раздел авторизации с элементом <allow users=""/>. В локальном приложении настройка allow наследуется неявно.

Если вы хотите явно задать настройки авторизации лишь для каких-то специфических файлов или папок, используйте элемент <ІосМіоп>. В следующем примере доступ разрешается только аутентифицированным пользователям, а к подкаталогу AdminArea и странице special.aspx доступ предоставляется только членам роли Administration.

<configuration <system.web> authentication mode="Forms" />

<authorization>

<deny users="?"/> </authorization> </system.web>

<location path="special.aspx"> <system.web>

<authorization> <allow ro1es-'Administ ration"/> <deny users="*"/> </authorization> </system.web> </location>

<location path="AdminArea"> <system.web> <authorization> <allow roles="Administration"/> <deny users=">"/> </authorization> </system.web> </location> </configuration>

Для того чтобы уменьшить количество элементов <location>, страницы со схожими требованиями по авторизации рекомендуется сгруппировать л подкаталоги.

| _1 ПРИМЕЧАНИЕ Элемент <location> является потомком элемента <configuration>. Вам нужно перестроить иерархию конфигурации <system.web> внутри элемента <!ocation>. Существует альтернативный вариант: поместить файл web.config с элементом авторизации в подкаталог, который необходимо конфигурировать. Однако я рекомендую хранить все настройки авторизации в одном месте.

Помните модуль UrlAuthorizationModule? Его работа состоит в инспектировании настроек авторизации в файле web.config для каждого запроса, Поскольку он запускается после модулей аутентификации, заполняется Context.User, и этому методу требуется лишь проверить, существует ли элемент ^authorization^ для запрашиваемого ресурса, и вызвать метод IsInRole или проверить имя пользователя для определения авторизации клиента. (В этом случае снова используются интерфейсы [Principal и Hdentity, то есть вы можете выполнить авторизацию URL по всем типам аутентификации.) В противном случае возвращается код состояния HTTP 401 (unauthorized). Вы также можете программным методом проверить, авторизован ли пользователь для ресурса в соответствии с авторизацией URL. Эту функциональность обеспечивает статичный метод Check UrlAccessForPrincipal модуля UrlAuthorizationModule.


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