У меня есть веб-сайт, работающий на сервере IIS 7.5 с ASP.NET 4.0 на общем хосте, но в полном доверии.
Сайт является основным "файловым браузером", который позволяет посетителям входить и иметь список в наличии файлов им отображенный, и, очевидно, загружать файлы. Статические файлы (главным образом файлы PDF) расположены в sub папке на сайте, названном данными, например, http://example.com/data/...
Сайт использует аутентификацию формы ASP.NET.
Мой вопрос: Как я заставляю механизм ASP.NET обрабатывать запросы для статических файлов в папке данных, так, чтобы запрос на файлы аутентифицировался ASP.NET, и пользователи не могут к внешней ссылке к файлу и захватывают файлы, которые им не позволяют иметь?
С наилучшими пожеланиями, Egil.
Если пул приложений работает в интегрированном режиме, вы можете сделать следующее.
Добавьте следующее в файл web.config верхнего уровня.
<system.webServer>
<modules>
<add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />
<remove name="UrlAuthorization" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
<remove name="DefaultAuthentication" />
<add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />
</modules>
</system.webServer>
Теперь вы можете использовать стандартные разрешения ASP.NET в файле web.config для принудительной проверки подлинности форм для всех файлов в каталоге.
<system.web>
<authorization>
<deny users="?" />
</authorization>
<authentication mode="Forms" />
</system.web>