6 Stimmen

Java Servlet Filter Weiterleitungsproblem

Ich habe ein Problem mit meinem Authentifizierungsfilter. Wenn der Filter zur Anmeldeseite weiterleitet, werden keine Bilder im Login-JSP angezeigt. Wenn ich jedoch manuell zur Anmeldeseite gehe, nachdem ich angemeldet bin, werden die Bilder angezeigt.

Ich verstehe nicht, warum das passiert! Ich schätze jede Hilfe. :-)

AuthFilter:

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

Login-Servlet:

// Verwende nur ein Servlet, falls ich mehr Daten an das JSP senden möchte
Dispatcher.dispatch("views/login.jsp", request, response);

login.jsp:

Das JSP ist ansonsten "normal", alle erforderlichen HTML-Tags sind vorhanden. Der "images"-Ordner befindet sich im Standardordner "web" des Projekts, neben allen anderen JSPs und JavaScripts.

Vielen Dank im Voraus für jede Hilfe. :)
- Stian

8voto

Bozho Punkte 570413

Es liegt an den relativen Pfaden.

  • Dein Login befindet sich im Stammverzeichnis des Kontexts
  • Deine Bilder befinden sich wahrscheinlich unter /views/images/
  • Wenn du weiterleitest, kennt der Browser nur die angeforderte URL.

Also, wenn du weiterleitest, werden die Bilder unter /images gesucht (weil sie relativ zur aktuellen Adresse sind) anstatt unter /views/images/

Wie kann man das lösen. Zwei Optionen:

  • Leite nicht von deinem Servlet weiter; leite stattdessen um
  • Leite nicht vom Filter zum Servlet weiter; leite stattdessen direkt zur Anmeldeseite um

Aktualisierung: Stelle sicher, dass die Bilder NICHT vom Filter beeinflusst werden. Zwei Optionen:

  • Sie sollten nicht vom Filtermuster erfasst werden
  • Es sollte keine Weiterleitung für .png, .jpeg, .css, etc. im Filter erfolgen. Überprüfe dies mit request.getRequestURI()

2voto

Thilo Punkte 248982

Könnte es sein, dass Ihr Filter auch auf Bildanfragen angewendet wird und die Anfrage nach logo.png auf login.jsp umleitet?

Wenn ja, könnten Sie das filter-mapping in der Datei web.xml anpassen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X