Сценарий
Я использую пользовательские IPrincipal
и IIdentity
для авторизации asp.net. Я установил Principal
и Identity
во время события PostAuthenticateRequest
, используя IHttpModule
.
Файл web.config выглядит примерно так:
<system.web>
<authorization>
<allow verbs="GET,POST" roles="domain\group"/>
<deny verbs="*" users="*"/>
</authorization>
</system.web>
<location path="~/admin/user_search.aspx">
<system.web>
<authorization>
<allow verbs="GET,POST" roles="admin"/>
<deny verbs="*" users="*"/>
</authorization>
</system.web>
</location>
Проблема
При выполнении запроса метод IPrincipal.IsInRole
вызывается один раз для проверки domain\group
, но не вызывается снова для проверки роли admin
. Чем это вызвано? У меня неправильный синтаксис location
или есть более глубокая проблема?
Примечания
Сначала я подумал, что web.config в каталоге admin переопределяет web.config в корневом каталоге, но я попытался удалить его полностью, а также использовать его для элемента location
. Ни один из них не работал до сих пор.