Я создаю динамический элемент управления навигацией, который переключает видимость элементов в навигации в зависимости от того, какие страницы пользователь имеет право просматривать в web.config.
Чтобы узнать, разрешен ли пользовательчтобы посетить страницу, я использую метод CheckUrlAccessForPrincipal и задаю правила авторизации для всего каталога, как этот.
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="demo\Administrators"/>
<deny users="*" />
</authorization>
</system.web>
</configuration>
Это работает так, как ожидалось, и CheckUrlAccessForPrincipal возвращает false для всех страниц вкаталог, который содержит файл web.config, когда текущий пользователь не входит в группу администраторов.
Теперь я хочу установить правила авторизации на уровне страницы, например, так.
<?xml version="1.0"?>
<configuration>
<location path="DemoPage.aspx">
<system.web>
<authorization>
<allow roles="demo\SomeDifferentGroup"/>
<deny users="*" />
</authorization>
</system.web>
</location>
</configuration>
Если я сейчас проверю, разрешен ли пользователю доступ к DemoPage, CheckUrlAccessForPrincipal возвращает true, независимо от того, находится текущий пользователь в SomeDifferentGroup или нет.
Я заверил, что конфигурацияверно.Посещение страницы, для которой текущий пользователь не авторизован, открывает Windows-аутентификацию и предлагает пользователю предоставить действительные учетные данные.
Есть идеи, почему поведение отличается в зависимости от того, установлены ли правила авторизации на уровне каталога или папки?