Как запретить пользователю доступ к подпапкам и файлу?
на локальной машине, я создал образец проекта на mvc4 (бритву) и создаю каталог с именем "x" и поместил в него текстовый файл "a.txt".
http://localhost:64471/x/a.txt
в моей веб-конфигурации я запрещаю всем пользователям доступ к папке "x" в этой конфигурации:
<location path="x">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
Теперь, если пользователь отправит этот запрос:
http://localhost:64471/x/
он работает и возвращает пользователя к URL-адресу, указанному в теге forms в веб-конфигурации.
но когда пользователь отправляет этот запрос:
http://localhost:64471/x/a.txt
может читать текстовый файл в браузере (браузер показывает содержимое текстового файла).
Я хочу знать, как запретить пользователю доступ ко всем файлам и подпапкам в папке "x" ?
Ответы
Ответ 1
Я тестировал с path="x"
в корневом web.config. Он ограничивает все в папке x; он даже не позволит мне просматривать ~/x. Я перенаправляюсь на страницу входа.
Не могли бы вы попробовать полный путь к a.txt, как в корневой web.config?
<location path="x/a.txt">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
Если он по-прежнему не работает, вы можете попробовать создать файл web.config внутри x со следующим содержимым.
<?xml version="1.0"?>
<configuration>
<location path="a.txt">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
Ответ 2
Я знаю, что это старый вопрос, но если у вас возникли проблемы и работа с текстовыми или html файлами, вы можете обратиться к fooobar.com/info/352721/...
Короче говоря, вам может потребоваться добавить это в ваш web.config:
<system.webServer>
<modules>
<remove name="UrlAuthorization" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
</modules>
</system.webServer>
Как указывает kirk, файлы, такие как .txt и .html файлы, обрабатываются IIS, а не ASP.NET, поэтому правила авторизации не применяется к ним.