2015-04-27 2 views
1

Я успешно создал тестовую зону на своем веб-сайте, которая аутентифицирована с использованием форм auth на iis 8. Я использую это в интегрированном режиме с asp.net, который, как я понимаю, должен означать, что с правильный файл web.config. Я могу заставить сервер использовать auth asp.net для всех, а не только для URL-адресов. Если я попытаюсь перейти на страницу, в которой я еще не ввел учетные данные, она возвращает ошибку 403, что я и ожидаю. Однако, если я точно помещу путь к файлу, хранящемуся на сайте, он загружает файл без необходимости предоставления учетных данных. Вот мой текущий уровень верхней web.config:Аутентификация форм не применяется к статическим файлам

<?xml version="1.0"?> 
<configuration> 
<system.web> 
    <compilation debug="false"> 
    </compilation> 

    <authentication mode="Forms"> 
     <forms name=".ASPXFORMSAUTH" loginUrl="default.aspx" /> 
    </authentication> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
</system.web> 

<location path="staff/test/test"> 
    <system.web>    
     <authorization> 
      <deny users="?"/> 
     </authorization> 
    </system.web> 
</location> 

<system.webServer> 
    <modules> 
     <remove name="FormsAuthenticationModule" /> 
     <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" /> 
     <remove name="UrlAuthorization" /> 
     <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /> 
     <remove name="RoleManager" /> 
     <add name="RoleManager" type="System.Web.Security.RoleManagerModule" /> 
     <remove name="DefaultAuthentication" /> 
     <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" /> 
    </modules> 
</system.webServer> 

Область /staff/test/test имеет документ слово в нем. Если я нахожу www.website.com/staff/test/test/test.doc в мой браузер, это файл загрузки.

Что я должен изменить, чтобы защитить этот файл?

+0

может у попробовать добавить это к вашим модули узла runAllManagedModulesForAllRequests = «истина»? – Sushil

+0

@ Сушиль, пока это сработает, это не обязательно и переполняет. [Этот ответ] (http://stackoverflow.com/a/21970733/1810243) показывает, как помещать определенные типы файлов через конвейер ASP.NET, чтобы их можно было защитить через web.config. – MikeSmithDev

+0

спасибо @MikeSmithDev. httphandler всегда лучше подходит для этого случая. – Sushil

ответ

0

Спасибо за ваши ответы. В итоге это оказалось разрешениями безопасности на корневом сайте. Код, который я вначале вставлял здесь, работал нормально. У меня была группа server \ users, у которой есть права на чтение, где мне нужны только iis_iusers, имеющие разрешения на чтение.

Еще раз спасибо

Смежные вопросы