asp.net Авторизация: расположение и IPrincipal.IsInRole

Сценарий

Я использую Custom 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. Ни то, ни другое пока не помогло.


person brad    schedule 24.02.2009    source источник


Ответы (1)


Не используйте тильду (~) в начале пути для элементов ‹location>, поскольку они там не интерпретируются. В вашем примере путь = "admin / user_search.aspx" должен быть правильным.

person Sam    schedule 24.02.2009