2017-01-28 3 views
0

verwende Ich benutze Authentifizierungsfilter. dies ist ein Teil des Filters:Bilder werden nicht in JSF geladen, wenn ich den Authentifizierungsfilter

if (reqURI.indexOf("/index.xhtml") >= 0) 
    chain.doFilter(request, response); 
else 
    resp.sendRedirect(reqt.getContextPath() + "/JSFViews/Login.xhtml"); 

und in JSF-Seiten habe ich Bilder zum Beispiel

<h:graphicImage library="image" name="logo.png" /> 

aber die Bilder nicht geladen, weil der Filter. Ich ändere auch meinen Code

if (reqURI.indexOf("/index.xhtml") >= 0 || reqURI.indexOf("/image") >= 0) 
    chain.doFilter(request, response); 
else 
    resp.sendRedirect(reqt.getContextPath() + "/JSFViews/Login.xhtml"); 

aber es funktioniert nicht. was soll ich machen?

+0

Können Sie sie zugreifen, wenn Sie überhaupt einen Filter entfernen? –

+0

@RomanC ja. es ist völlig korrekt – Sara

+0

Ich glaube, dass die graphicImage zu etwas wie (überprüfen Sie die HTML) rendern wird. Dein Check wird also nicht funktionieren. Sie könnten zum Beispiel "javax.faces.resource" testen, aber ich denke, es wäre besser zu überprüfen, ob der Benutzer angemeldet ist, indem Sie in der Sitzung (oder einer SessionScoped-Bean) –

Antwort

0
String servletPath = request.getServletPath(); 

if (servletPath.equals("/JSFViews/index.xhtml") || servletPath.startsWith(ResourceHandler.RESOURCE_IDENTIFIER)) 
    chain.doFilter(request, response); 
else 
    resp.sendRedirect(request.getContextPath() + "/JSFViews/Login.xhtml"); 
+0

vielen Dank schauen. du hilfst mir sehr. Mein Problem wurde gelöst. danke – Sara

+0

Gern geschehen. Wenn diese Antwort Ihr Problem gelöst hat, markieren Sie es als akzeptiert :) –

0

Sie können die Bedingung zum Filtern von Ressourcen basierend auf der Dateierweiterung ändern.

if (reqURI.indexOf("/index.xhtml") >= 0 || new URI(reqURI).getPath().endsWith(".png")) 
    chain.doFilter(request, response); 
Verwandte Themen