gpt4 book ai didi

java - 用于排除 javax.faces.resource 被 servlet 过滤器调用的 Url 模式

转载 作者:行者123 更新时间:2023-11-29 05:53:47 24 4
gpt4 key购买 nike

我已经创建了一个 servlet 过滤器 来处理 session 超时和身份验证。

@WebFilter(urlPatterns={"/acc/*"})
public class ResourceAuthorizationFilter implements Filter { ... }

我要过滤的页面具有这样的模式:/acc/login-flow/acc/profiles-flow。过滤器也会为资源(css、js 和图像)调用。如何配置 urlPatterns 以排除过滤这些资源?

编辑1
以下是一些经过过滤的网址:

http://localhost:8081/acme-0.0.1/acc/login-flow
http://localhost:8081/acme-0.0.1/acc/javax.faces.resource/theme.css
http://localhost:8081/acme-0.0.1/acc/javax.faces.resource/jquery/jquery.js
http://localhost:8081/acme-0.0.1/acc/javax.faces.resource/primefaces.js
http://localhost:8081/acme-0.0.1/acc/javax.faces.resource/ajax.gif
http://localhost:8081/acme-0.0.1/acc/javax.faces.resource/login.png
http://localhost:8081/acme-0.0.1/acc/javax.faces.resource/header.png
http://localhost:8081/acme-0.0.1/acc/javax.faces.resource/images/ui-bg_flat_75_ffffff_40x100.png
http://localhost:8081/acme-0.0.1/acc/javax.faces.resource/images/default.png
http://localhost:8081/acme-0.0.1/acc/javax.faces.resource/images/ui-icons_888888_256x240.png

我在 webapp/resources 文件夹下有一些自定义的 css/js 文件,但这些文件不是来自那里。

acc部分来自:

<servlet-mapping>
<servlet-name>Spring MVC Servlet</servlet-name>
<url-pattern>/acc/*</url-pattern>
</servlet-mapping>

EDIT2
这些代码示例来自使用 JSF 2.0、PrimeFaces 3.4.1、Spring 3.0.5.RELEASE、Spring Security 3.0.3.RELEASE 和 Spring Web Flow 2.3.0.RELEASE 实现的项目。

最佳答案

只需将资源移动到/acc 之外的不同文件夹即可.默认情况下,它们应该在 /resources 中文件夹,以便您可以使用 <h:outputScript> , <h:outputStylesheet><h:graphicImage>正确的方法。

如果由于某种原因你不能解决这个问题,那么你真的需要检查 doFilter() 中的请求 URI。执行。即没有方法可以排除 URL 模式中的子模式。

String path = request.getRequestURI().substring(request.getContextPath().length());

if (path.startsWith("/acc" + ResourceHandler.RESOURCE_IDENTIFIER)) {
chain.doFilter(request, response);
} else {
// ...
}

更新:根据您的问题更新,您使用 Spring MVC 的原因不明。它还处理所有 JSF 资源请求。你应该告诉它不要那样做。我无法从头顶告诉如何做到这一点,但它至少与 <mvc:resources> 有关。 .

关于java - 用于排除 javax.faces.resource 被 servlet 过滤器调用的 Url 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12955778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com