如何创建 JSF 过滤器/url 模式来保护 javascript

How to create a JSF Filter/url-pattern to protect javascripts

本文关键字:url 模式 javascript 保护 过滤器 JSF 何创建 创建      更新时间:2023-09-26

我编写了一个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 文件。有没有办法创建一个只匹配javascript的URL模式?

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

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

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

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

另请参阅:

  • 映射 servlet 以满足我的请求
*

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

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

它永远不会匹配...

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

查看此页面