0

Я использую проверку подлинности с помощью веб-форм ASP.NET и успешно аутентифицирует пользователя.Авторизация веб-форм ASP.NET разрешает доступ для анонимного пользователя к определенным страницам

С помощью этих параметров авторизации в web.config анонимный пользователь может получить доступ только к странице входа.

<authorization> 
    <deny users="?" /> 
    </authorization> 

или

<location path="SubFolder"> 
    <system.web> 
     <authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

Я пытаюсь использовать тег местоположения для дальнейшего разрешить анонимный доступ к дополнительным страницам, но они игнорируются:

<location path="SubFolder/LoggedOut.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="?" /> 
     </authorization> 
    </system.web> 
    </location> 

После настройки ASP.NET Наследование тег авторизации в теге местоположения должен перезаписать глобальный тег авторизации.

Система определяет, какое правило имеет приоритет, создавая объединенный список всех правил для URL-адреса с самыми последними правилами (ближайшими по иерархии) во главе списка. (link)

Как я могу отказать анонимный доступ ко всем страницам, но те, которые я указываю?

Ответы на это question утверждают, что то, что я делаю, является правильным. Но, похоже, это не работает для меня. Так почему это происходит? Есть ли способ узнать, какие настройки блокируют доступ, когда я пытаюсь получить доступ к странице? Есть что-то, чего я не вижу?

ответ

0

По-видимому, файл с ограниченным доступом не может находиться в ограниченном каталоге. Однако делать то же самое с менее ограниченным каталогом в порядке.

я в конечном итоге размещения публичных файлов в корневом каталоге и все защищенные файлы в папке, используя следующие web.config:

... 
    <authorization> 
    <allow users="*" /> 
    </authorization> 
... 
    <location path="SubFolder"> 
    <system.web> 
     <authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
... 

Испытано в .NET-Framework 4.5, Visual Studio Enterprise 2015.