2017-01-28 4 views
0

Я использую фильтр проверки подлинности. это часть фильтра:изображения не загружаются в jsf, когда я использую фильтр аутентификации

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

и JSF страницы У меня есть изображения, например

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

но изображения не загружается из-фильтра. Я также меняю свой код

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

но он не работает. что мне делать?

+0

Вы можете получить доступ к ним, если вы удалите фильтр на всех? –

+0

@ RomanC да. это совершенно правильно – Sara

+0

Я верю, что graphicImage сделает что-то вроде (проверьте html). Таким образом, ваш чек не будет работать. Вы можете протестировать, например, «javax.faces.resource», но я думаю, что было бы лучше проверить, зарегистрирован ли пользователь, просматривая сеанс (или компонент SessionScoped) –

ответ

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

. вы мне очень помогаете. моя проблема решена. спасибо – Sara

+0

Добро пожаловать. Если этот ответ решит вашу проблему, отметьте его как принятый :) –

0

Вы можете изменить условие фильтрации ресурсов на основе расширения файла.

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