2010-02-03 11 views
5

Tengo un problema con mi filtro de autenticación. Cuando el filtro redirige a la página de inicio de sesión, no se muestran imágenes en el JSP de inicio de sesión. Sin embargo, si voy a la página de inicio de sesión manualmente después de iniciar sesión, se muestran las imágenes.Problema de redirección del filtro de servlet Java

¡No entiendo por qué sucede esto! Agradezco cualquier ayuda. :-)

AuthFilter:

if (authorized == null && path.indexOf("Auth") == -1 && path.indexOf("Login") == -1) { 
     httpResponse.sendRedirect("Login"); 
     return; 
} else { 
     chain.doFilter(request, response); 
} 

sesión servlet:

// Just using a servlet in case I want more data sent to the jsp 
Dispatcher.dispatch("views/login.jsp", request, response); 

login.jsp:

<img src="images/logo.png" /> 

El JSP es de otra manera "normal", todas las etiquetas HTML son requeridos presente. La carpeta "images" se encuentra en la carpeta "web" predeterminada del proyecto, junto con todas las otras jsp y javascripts.

Gracias de antemano por cualquier ayuda. :)
- Stian

Respuesta

7

Es debido a las rutas relativas.

  • su Login está en la raíz del contexto
  • sus imágenes son probablemente /views/images/
  • cuando hacia adelante, el navegador sólo conoce la dirección URL solicitada.

Así que cuando usted hacia adelante, las imágenes es reclamado en /images (porque están en relación con la dirección actual) en lugar de /views/images/

cómo resolverlo. Dos opciones:

  • no reenviar desde su servlet; redirigir en su lugar
  • no redirigir al servlet del filtro; redirigir directamente a la página de inicio de sesión

Actualizar: Asegúrate de que las imágenes NO se vean afectadas por el filtro. dos opciones:

  • no deben ser igualadas por el patrón de filtro
  • redirección no pasaran por .png, .jpeg, css, etc en el filtro. mira esto con request.getRequestURI()
+0

He intentado redireccionar a login.jsp desde el filtro, pero eso no funcionó .. Cuando vi la fuente en Firefox y hice clic en la imagen, dijo que la página no estaba redirigiendo correctamente. Entonces, probablemente sea el filtro el que está causando este problema. – Stian

+0

ah, entonces usted tiene que excluir las imágenes del filtro - ver mi actualización – Bozho

+0

Gracias por la ayuda, ahora sé dónde está el problema. :) – Stian

2

Podría ser que el filtro se aplica también a las solicitudes de imágenes y redirige la solicitud de logo.png-login.jsp?

Si es así, puede ajustar el filter-mapping en web.xml.

+0

Creo que estás haciendo algo aquí. Cuando vi el origen de login.jsp en firefox, y luego hice clic en el enlace a la imagen, obtuve un 404: el recurso solicitado (/ PJ600/images/Login) no está disponible. ¿Qué quiere decir con el ajuste del mapeo de filtro? – Stian

Cuestiones relacionadas