2010-02-03 15 views
5

Ho un problema con il mio filtro di autenticazione. Quando il filtro reindirizza alla pagina di accesso, nessuna immagine viene visualizzata nel JSP di accesso. Tuttavia, se si accede alla pagina di accesso manualmente dopo aver effettuato l'accesso, vengono visualizzate le immagini.Problema di reindirizzamento filtro servlet Java

Non capisco perché questo sta accadendo! Apprezzo qualsiasi aiuto. :-)

AuthFilter:

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

Accesso 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" /> 

Il jsp altrimenti è "normale", tutti i tag HTML necessari sono presente. La cartella "images" si trova nella cartella "web" predefinita del progetto, insieme a tutti gli altri jsp e javascript.

Grazie in anticipo per qualsiasi aiuto. :)
- Stian

risposta

7

È a causa dei percorsi relativi.

  • tuo Login è nella radice del contesto
  • le immagini probabilmente sono /views/images/
  • quando in avanti, il browser sa solo l'URL richiesto.

Quindi, quando si in avanti, le immagini vengono cercavano durante /images (perché sono relativi alla attuale indirizzo) al posto di /views/images/

come risolverlo. Due opzioni:

  • non inoltrare dal servlet; reindirizzare invece
  • non reindirizzare al servlet dal filtro; reindirizzare direttamente alla pagina di login

Aggiornamento: Verificare che le immagini NON siano interessate dal filtro. due opzioni:

  • non dovrebbero essere compensato dal modello del filtro
  • reindirizzamento non dovrebbero accadere per .png, .jpeg, css, ecc nel filtro. controlla con request.getRequestURI()
+0

Ho provato a reindirizzare a login.jsp dal filtro, ma questo non ha funzionato .. Quando ho visto il codice sorgente in Firefox e ho fatto clic sull'immagine, ho detto che la pagina non stava reindirizzando correttamente. Quindi probabilmente è il filtro a causare questo problema. – Stian

+0

ah, quindi devi escludere le immagini dal filtro - vedi il mio aggiornamento – Bozho

+0

Grazie per l'aiuto, ora so dove si trova il problema. :) – Stian

2

Potrebbe essere che il filtro è applicato anche alle richieste di immagini e reindirizza la richiesta di logo.png-login.jsp?

In tal caso, è possibile regolare lo filter-mapping in web.xml.

+0

Penso che tu stia facendo qualcosa qui. Quando ho visto la fonte di login.jsp in firefox, e poi ho fatto clic sul link all'immagine, ho ottenuto un 404: la risorsa richiesta (/ PJ600/images/Login) non è disponibile. Cosa intendi con la regolazione della mappatura del filtro? – Stian

Problemi correlati