Сценарий
Използвам персонализирани 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 в администраторската директория замества web.config в основната директория, но се опитах да го премахна напълно, както и да го използвам за елемента location
. Нито един от тях не е работил досега.