2011-09-29 19 views
8

Mam do ochrony katalogu na serwerze Windows. Strona powinna pokazywać listę plików znajdujących się w tym katalogu. Nie posiadam żadnej wcześniejszej wiedzy (pracowałem tylko z Apache'em), więc próbowałem hakować coś razem przez szukanie w Google. (Dla kogoś, kto wie, co robią, jestem pewien, że będzie to wyglądało śmiesznie)Folder ochrony hasłem z web.config

Co mam teraz, to mam wyskakujące okienko logowania, ale hasło nie działa. Mamy tabelę w naszej bazie danych SQL dla administratorów, więc albo pobranie loginu użytkownika z tego miejsca, albo zalogowanie się w pliku konfiguracyjnym jest w porządku. Wszystko, czego potrzebuję, to folder chroniony hasłem.

To właśnie mam teraz w moim pliku web.config, który znajduje się w folderze, który ma być chroniony hasłem.

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.web> 
     <authentication mode="Forms"> 
      <credentials passwordFormat="Clear"> 
       <user name="test" password="test" /> 
      </credentials> 
     </authentication> 
     <authorization> 
      <allow users="test" /> 
      <deny users="*" /> 
     </authorization> 
    </system.web> 
    <system.webServer> 
     <directoryBrowse enabled="true" /> 
     <security> 
      <authentication> 
       <anonymousAuthentication enabled="false" /> 
       <basicAuthentication enabled="true" /> 
       <windowsAuthentication enabled="false" /> 
      </authentication> 
     </security> 
    </system.webServer> 
</configuration> 

Mam nadzieję, że jest to prosty problem i z góry dzięki za pomoc! :)

+0

Masz mieszankę uwierzytelnianie podstawowe i Forms Authentication dzieje to wygląda . Jeśli spodziewasz się, że test/test zadziała w popupie, nie będzie. Podstawowe uwierzytelnianie wymaga nazwy użytkownika/hasła Windows, która jest na serwerze, jak sądzę. Musisz albo iść tą drogą, albo pozbyć się podstawowego uwierzytelnienia i zaimplementować resztę strony FormsAuthentication: Login, itp. –

+0

Czy sądzisz, że nadal możliwe byłoby zrobienie niestandardowego logowania z sesjami itp. I użycie "directoryBrowse"? – hesselbom

+1

Czy w jakiś sposób można użyć okna wyskakującego jako logowania zamiast formularza? – hesselbom

Odpowiedz

3

Spróbuj tego:

<configuration>  
    <system.web>  
     <authentication mode="Forms">  
      <credentials passwordFormat="Clear">  
       <user name="test" password="test" />  
      </credentials>  
     </authentication>  
     <authorization>  
      <allow users="test" />  
      <deny users="*" />  
     </authorization>  
    </system.web>  
    <location path="admin"> 
     <system.web> 
      <authorization>    
       <allow roles="admin" /> 
       <deny users="*"/> 
      </authorization> 
     </system.web> 
    </location> 
    <system.webServer>  
     <directoryBrowse enabled="true" />  
     <security>  
      <authentication>  
       <anonymousAuthentication enabled="false" />  
       <basicAuthentication enabled="true" />  
       <windowsAuthentication enabled="false" />  
      </authentication>  
     </security>  
    </system.webServer>  
</configuration> 

Można zaszyfrować dane użytkownika za pomocą czegoś takiego:

aspnet_regiis.exe -pef "sectionName" C:\Path\To\Your\Application 
+0

Gdzie mam to umieścić? W pliku konfiguracyjnym w katalogu głównym lub w pliku konfiguracyjnym, o którym wspomniałem w pytaniu? Skąd się wzięłyby informacje o użytkowniku? – hesselbom

+1

Umieść go w pliku web.config, poza sekcją system.web. –

+0

Edytowałem swoją odpowiedź, aby pokazać, gdzie można ją umieścić. –