2010-08-28 28 views
18

Używam uwierzytelniania formularzy w IIS7 do ochrony witryny dla dewelopera, ale uwierzytelnienie wydaje się być ominięte, gdy witryna zawiera tylko pliki statyczne HTML statyczne pliki HTML + .onfig.Jak wykonać uwierzytelnianie formularzy na stronach czysto HTML za pomocą ASP.NET?

Po zmianie nazwy plików na .aspx, pojawia się monit z formularzem logowania Nie robię nic nadzwyczajnego. Mam bardzo prosty skrypt logowania i powinien on po prostu przekierować do index.html.

Wszelkie sugestie? Podsumowując, cała strona używa HTML (na razie) i musi być chroniona hasłem.

<authentication mode="Forms"> 
    <forms name="appNameAuth" path="/" loginUrl="~/login.aspx" defaultUrl="index.html" protection="All" timeout="525600"> 
    <credentials passwordFormat="Clear"> 
     <user name="[user]" password="[password]" /> 
    </credentials> 
    </forms> 
</authentication> 
<authorization> 
    <deny users="?" /> 
</authorization> 

Odpowiedz

10

Aby zablokować pliki HTML poprzez automatyczne uwierzytelnianie formularzy, należy je udostępnić w ASP.NET. Możesz to zrobić w IIS, wiążąc potrzebne rozszerzenia (np. .html, .htm, itp.) Z plikiem aspnet_isapi.dll.

Pliki ASP.NET obsługują te pliki, można określić uprawnienia dla nich, tak jak każda strona aspx.

uzyskać więcej informacji patrz MSDN:

Domyślnie IIS procesy static zawartość sama - jak strony HTML i CSS i plików graficznych - i tylko ręce off wniosków do wykonywania ASP.NET , gdy zażądano strony o rozszerzeniu .aspx, .asmx lub .ashx.

IIS 7 pozwala jednak na zintegrowane potoki IIS i ASP.NET w postaci . Za pomocą kilku ustawień konfiguracyjnych można ustawić IIS 7, aby wywołać moduł FormsAuthenticationModule dla wszystkich żądań . Ponadto w IIS 7 możesz zdefiniować reguły autoryzacji URL dla plików dowolnego typu. Więcej informacji na temat zawiera sekcja Zmiany między IIS6 i IIS7 Security, Twoja platforma internetowa Zabezpieczenia i opis adresu URL IIS7 Autoryzacja.

Krótko mówiąc, w wersjach przed IIS 7, można użyć tylko uwierzytelnianie formularzy ochrony zasobów obsługiwane przez program ASP.NET. Podobnie, reguły autoryzacji adresów URL są stosowane tylko do zasobów obsługiwanych przez środowisko wykonawcze ASP.NET w wersji . Ale z IIS 7 to można zintegrować FormsAuthenticationModule i UrlAuthorizationModule do HTTP rurociągu IIS, tym samym rozszerzając tę ​​ funkcjonalności do wszystkich żądań.

1

mam rozwiązać ten sam problem kilka dni temu, postępując zgodnie z post przez fr33m3 @ 11-21-2007, 3:19 pm w tym wątku: http://forums.asp.net/t/1184547.aspx śledzić wszystkie kroki od 2. do 5. i gotowe!

Mam nadzieję, że to może ci pomóc, pomógł mi.

+0

Możesz chcieć podsumować informacje o SO w przypadku zniknięcia drugiej witryny. –

10

W IIS7, jeśli chcesz chronić pliki * .html lub * .htm (lub inne rozszerzenia nie .net) w ramach uwierzytelniania formularzy, dodaj następujące wiersze do swojej sieci.config:

<compilation> 
    <buildProviders> 
     <add extension=".html" type="System.Web.Compilation.PageBuildProvider" /> 
     <add extension=".htm" type="System.Web.Compilation.PageBuildProvider" /> 
    </buildProviders> 
</compilation> 

I

<system.webServer> 
    <handlers> 
     <add name="HTML" path="*.html" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" /> 
     <add name="HTM" path="*.htm" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" /> 
    </handlers> 
</system.webServer> 
+2

Próbowałem użyć tego do serwowania plików Excel. Jednak program ASP.NET próbował skompilować pliki programu Excel, co spowodowało błąd składni. – Sjoerd

1

Chociaż jest to stara sprawa, znajdę link w odpowiedzi pomarc naprawdę użytecznego. Poniżej znajduje się podsumowanie, które jest odpowiednie dla IIS7.

w twojej web.config, dodać lub modyfikować <handlers> pod <system.webServer>:

<handlers> 
    <add name="HTML" path="*.html" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" /> 
</handlers> 

Wymień verb wartość z listy wymagany jeden; scriptProcessor wartość z właściwą ścieżką otoczenia.

Następnie dodać lub zmodyfikować <compilation> i <httpHandlers> pod <system.web>:

<compilation debug="false" strict="false" explicit="true"> 
    <buildProviders> 
    <!--Add below so .html file will be handled by ASP.NET (for use of Forms Authentication)--> 
    <add extension=".html" type="System.Web.Compilation.PageBuildProvider" /> 
    </buildProviders> 
</compilation> 
<httpHandlers> 
    <!--Add below so .html file will be handled by ASP.NET (for use of Forms Authentication)--> 
    <add verb="GET, HEAD, POST, DEBUG" path="*.html" type="System.Web.UI.PageHandlerFactory" /> 
</httpHandlers> 

Wymień verb ze swoją wartość wymagana jeden.

Możesz również dodać więcej rozszerzeń oddzielonych przecinkami ','