Работает ли авторизация web.config с файлами, отличными от aspx? - PullRequest
4 голосов
/ 09 июня 2011

У меня есть приложение ASP.NET с аутентификацией форм.Это работает хорошо, но у меня есть один каталог с файлами .lyxt (только aspx), к которому я не хочу, чтобы пользователи обращались (или только входили в систему).

Я добавил web.config в этот каталог:

<system.web>
    <authorization>
        <deny users="?" />
    </authorization>
</system.web>

РЕДАКТИРОВАТЬ:

Это работает только для файлов .aspx.Это не работает для файлов .txt и подобных.Пользователи не могут просматривать этот каталог или подкаталоги, однако, зная имя файла .txt, они могут получить к нему доступ.

Я пробую IIS6 и IIS 7.5.На IIS6 .txt файлы также ограничены, но на IIS 7.5 нет, так что это может быть проблема конфигурации IIS.

Ответы [ 3 ]

7 голосов
/ 09 июня 2011

Ваш вопрос зависит от веб-сервера, который вы используете.Авторизация ASP.NET работает только с типами файлов, которые обрабатываются ASP.NET.Если у вас IIS 5 или 6, это обычно не так для файлов .txt или даже для файлов .jpg, .gif и pure .html, но только для aspx, asmx и т. Д.

Нет проблем, если у вас естьIIS7 и интегрированный режим, потому что ASP.NET интегрирован и будет вызываться для каждого типа файла.Поэтому, если у вас есть IIS5 или 6, вы должны зарегистрировать типы MIME, такие как aspnet.isapi, который также вызывается для файлов .txt.

ОБНОВЛЕНИЕ: Конфигурация

 <deny users="*"> 

блокировокиз всех пользователей.Это будет работать только в сочетании с allow, например,

<allow roles="administrators" /> 
<deny users="*"> 

, как и все пользователи, но администраторы будут заблокированы.Если пользователь аутентифицирован, но не является администратором, он будет перенаправлен на страницу входа в систему.

Другой вариант - заблокировать только анонимных пользователей:

<deny users="?"> 
3 голосов
/ 10 июня 2011

Если вы используете IIS 7+, то вы можете использовать раздел system.webServer / security / authorization http://www.iis.net/ConfigReference/system.webServer/security/authorization, и он автоматически работает для любого типа контента в любом режиме конвейера.Если вы все еще хотите использовать system.web seciton, вам нужно будет использовать Integreated Mode и вносить изменения, упомянутые в модулях, для запуска всего контента, но, безусловно, самым простым является использование system.webServer / security / authorization.вместо этого.

3 голосов
/ 09 июня 2011

Добавить location раздел в web.config с соответствующими настройками Элемент location (Схема настроек ASP.NET)

...