当我使用身份验证过滤器时,图像不会加载到 jsf 中

images doesn't load in jsf when i use authentication filter

我使用身份验证过滤器。这是过滤器的一部分:

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");

但它不起作用。我该怎么办?

您可以更改条件以根据文件扩展名过滤资源。

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