如何创建 JSF 过滤器/url 模式来保护 javascript
Posted
技术标签:
【中文标题】如何创建 JSF 过滤器/url 模式来保护 javascript【英文标题】:How to create a JSF Filter/url-pattern to protect javascripts 【发布时间】:2012-06-15 18:19:19 【问题描述】:我编写了一个 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 模式?
【问题讨论】:
作为一项工作,我添加了模式<url-pattern>/javax.faces.resource</url-pattenr>
并在过滤器代码中处理了所需的情况
【参考方案1】:
* 通配符功能在 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>
check out this page
【讨论】:
【参考方案2】:<url-pattern>/*.js.jsf</url-pattern> <--- invalid pattern
这确实是一个无效的 URL 模式。通配符 *
只能位于 URL 模式的开头或结尾。在您的特定情况下,您根本不需要 /
前缀。
<url-pattern>*.js.jsf</url-pattern> <--- valid pattern
请注意,此问题与 JSF无关。 Servlet 过滤器是基本 Servlet API 的一部分。
另见:
mapping servlet to serve my requests【讨论】:
以上是关于如何创建 JSF 过滤器/url 模式来保护 javascript的主要内容,如果未能解决你的问题,请参考以下文章