asp.net-mvc - renderbody - multiples vistas en la misma pagina mvc
¿Por qué mi hoja de estilo me redirige para iniciar sesión? (7)
Estoy seguro de que esto tiene algo que ver con IIS, pero no puedo resolverlo.
Tengo un sitio web utilizando formularios de autenticación. Cuando mi sitio web intenta acceder a cualquier recurso de archivo (archivos javascript, css, etc.), se me redirige a la página de inicio de sesión de formularios establecida en mi web.config. También me redireccionan si escribo la dirección en la barra de direcciones.
La entrada web.config para formularios auth es bastante básica:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
También hay dos nodos de ubicación para negar a los usuarios de otras partes del sitio:
<location path="n2">
<system.web>
<authorization>
<allow roles="Editors" />
</authorization>
</system.web>
</location>
<location path="web.config">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
Estoy utilizando la instalación estándar de IIS7 en Windows Server 2008 R2.
Editar Entonces, si agrego una cookie de autenticación aleatoria ( FormsAuthentication.SetAuthCookie()
), los recursos estarán disponibles, sé que tiene que ser mi modelo de autenticación el que esté desordenado de alguna manera. Funciona en otro servidor (acabo de copiarlo). ¿Alguna idea de cómo puedo rastrear el problema?
¡Tenía exactamente lo mismo y descubrí que era porque había olvidado permitir el acceso anónimo al sitio web desde dentro de IIS! Esto significaba que la Autenticación de formularios siempre se activaba, incluso para los recursos estáticos que no estaban protegidos.
En IIS, mi autenticación anónima estaba activada correctamente y el usuario estaba configurado en IUSR. Por lo tanto, tenía que ingresar al Explorador de Windows, navegar al directorio de mi aplicación web, hacer clic con el botón derecho en Propiedades, la pestaña Seguridad, el botón Editar y otorgar a IUSR los permisos de Lectura, Lista y Lectura y Ejecución (el conjunto predeterminado). Asegúrese de que los cambios sean heredados por todos los hijos, solicite, posiblemente espere, y estará listo.
Eso es porque has negado a todos. En IIS 7, debido a la canalización integrada, será redirigido incluso cuando intente navegar por CSS o cualquier página estática.
Coloque el contenido estático dentro de una carpeta si lo desea y permita el acceso a él.
Ha pasado mucho tiempo desde que hice cualquier trabajo de formularios asp.net, pero las primeras preguntas serían: ¿está seguro de que su usuario es miembro del rol de "Editores"? Puede utilizar la herramienta de administración del sitio web para configurar esto, creo? http://msdn.microsoft.com/en-us/library/ssa0wsyf.aspx
No use etiquetas <location>
en web.config para manejar la autorización en una aplicación MVC de ASP.NET porque las ubicaciones ya no tienen sentido. Todo lo que necesita en web.config es la etiqueta de authentication
. En MVC, la autorización podría lograrse decorando los controladores y / o acciones adecuados con el atributo [Authorize]
.
Tuve el mismo error, en mi caso, el truco fue configurar la autenticación anónima para usar la identidad del grupo de aplicaciones en lugar de IUSR en IIS
- Abrir IIS
- Expandir Sitios
- Seleccione [YourWebSite]
- Haga doble clic en Autenticación (estará bajo el "Área" de IIS o la "Categoría" de Seguridad)
- Seleccione autenticación anónima
- Haga clic en Editar en el panel Acciones.
- Haga clic en el botón de opción ''Identidad del grupo de aplicaciones''
Yo uso allow *
para mi carpeta de Content
. Eso evitará que ocurra cualquier autorización para contenido estático.
<location path="Content">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Almiar