2010-08-28 15 views
18

Uso la autenticación de formularios en IIS7 para proteger con contraseña un sitio de desarrollo, pero la autenticación parece obviarse cuando el sitio contiene solo HTML estático archivos + login.aspx + web.config.Cómo hacer formularios Autenticación en páginas puramente HTML utilizando ASP.NET?

Cuando cambié el nombre de los archivos a .aspx, me aparece el formulario de inicio de sesión No estoy haciendo nada elegante. Tengo un script de inicio de sesión muy simple y simplemente debería redireccionar a index.html después.

¿Alguna sugerencia? Para resumir, todo el sitio usa HTML (por ahora) y necesita estar protegido por contraseña.

<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> 

Respuesta

10

Para hacer que los archivos HTML estén bloqueados por la authetication de sus formularios, necesita que ASP.NET los atienda. Puede hacer esto en IIS asociando la (s) extensión (es) que necesita (por ejemplo, .html, .htm, etc.) con aspnet_isapi.dll.

Onces ASP.NET está al servicio de esos archivos, puede especificar los permisos para ellos al igual que cualquier página aspx.

Para obtener más información, consulte MSDN:

forma predeterminada, IIS procesos estática contenido en sí mismo - como páginas HTML y archivos CSS y de imagen - y sólo las manos fuera peticiones al tiempo de ejecución ASP.NET cuando se solicita una página con una extensión de .aspx, .asmx o .ashx.

IIS 7, sin embargo, permite las tuberías integradas IIS y ASP.NET. Con unas pocas configuraciones de configuración puede configurar IIS 7 para invocar el FormsAuthenticationModule para todas las solicitudes . Además, con IIS 7, usted puede definir las reglas de autorización URL para los archivos de cualquier tipo. Para obtener más información sobre , consulte Cambios entre IIS6 e IIS7 Security, Your Web Platform Seguridad y Comprensión de IIS7 URL Autorización.

Para resumir, en versiones anteriores a IIS 7, sólo se puede utilizar formas autenticación para proteger los recursos manejados por el tiempo de ejecución de ASP.NET. Del mismo modo, las reglas de autorización de URL son solo aplicadas a recursos manejados por el tiempo de ejecución de ASP.NET. Pero con IIS 7 es es posible integrar el FormsAuthenticationModule y UrlAuthorizationModule en la interconexión de HTTP de IIS, extendiendo de esta manera la funcionalidad a todas las solicitudes.

1

he resuelto el mismo problema hace unos días, siguiendo el mensaje por fr33m3 @ 21/11/2007, 15:19 sobre este tema: http://forums.asp.net/t/1184547.aspx seguir todos los pasos del punto 2. Para 5. ¡y listo!

Espero que esto pueda ayudar a que me haya ayudado.

+0

Es posible que como para resumir la información sobre lo que en caso que el otro sitio desaparece. –

10

En IIS7 si desea proteger los archivos * .html o * .htm (u otras extensiones que no sean .net) en la autenticación de formularios, agregue las siguientes líneas a su web.config:

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

Y

<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

Intenté usar esto para servir archivos de Excel. Sin embargo, ASP.NET intentó compilar los archivos de Excel y esto dio un error de sintaxis. – Sjoerd

1

Aunque esta es una vieja pregunta, creo que el enlace en la respuesta de pomarc realmente útil. A continuación se muestra el resumen que es adecuado para IIS7.

En su web.config, añadir o modificar <handlers> bajo <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> 

Reemplazar verb valor con su requerido uno; scriptProcessor valor con la ruta correcta de su entorno.

A continuación, añadir o modificar <compilation><httpHandlers> y bajo <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> 

Reemplazar verb valor con su necesaria una.

También puede incluir más de extensión separados por coma ''

Cuestiones relacionadas