4

我编写了一个 Java Web 过滤器来处理我的 JSF 应用程序的安全性。我有这样的过滤器映射:

<filter-mapping>
    <filter-name>authFilter</filter-name>
    <url-pattern>/secure/*</url-pattern>
    <url-pattern>/login.jsf</url-pattern>
    <url-pattern>/*.js.jsf</url-pattern>    <--- invalid pattern
</filter-mapping>

现在我想创建一个 url 模式来过滤所有 javascript 文件。我正在使用 Primefaces,因此 .js 文件在 URL 中被检索,如下所示:

http://localhost:8080/MyProject/javax.faces.resource/MyJavascriptFile.js.jsf?ln=MyLibrary

我不能过滤整个javax.faces.resouces,因为它也包含 CSS 文件。有没有办法创建一个只匹配 javascripts 的 URL 模式?

4

2 回答 2

3
<url-pattern>/*.js.jsf</url-pattern>    <--- invalid pattern

这确实是一个无效的 URL 模式。通配符*只能位于 URL 模式的开头或结尾。在您的特定情况下,您根本不需要/前缀。

<url-pattern>*.js.jsf</url-pattern>    <--- valid pattern

请注意,此问题与 JSF无关。Servlet 过滤器是基本 Servlet API 的一部分。

也可以看看:

于 2012-12-05T18:00:53.300 回答
1

* 通配符功能在 JSF 中受到限制,因为只允许使用一个 *,并且它必须位于“form-view-id”字符串的末尾。例如,(任何 xml)它可以工作。

<from-view-id>/customer/*</from-view-id>

它永远不会匹配......</p>

<from-view-id>/cus*mer/</from-view-id>
<from-view-id>/c*sto*er/*</from-view-id>
<from-view-id>*/customer</from-view-id>

看看这个页面

于 2012-08-29T07:49:05.553 回答