Как создать шаблон JSF Filter/url для защиты javascripts

Я написал веб-фильтр Java для обеспечения безопасности моего приложения 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. Есть ли способ создать шаблон URL для соответствия только javascripts?


person Pedro Peixoto    schedule 12.06.2012    source источник
comment
В качестве обходного пути я добавил шаблон <url-pattern>/javax.faces.resource</url-pattenr> и обработал нужные случаи в коде фильтра.   -  person Pedro Peixoto    schedule 13.06.2012


Ответы (2)


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

Это действительно недопустимый шаблон URL. Подстановочный знак * может быть только в начале или в конце шаблона URL. В вашем конкретном случае вам вообще не нужен префикс /.

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

Обратите внимание, что эта проблема не имеет ничего общего с JSF. Фильтры сервлетов являются частью базового API сервлетов.

Смотрите также:

person BalusC    schedule 05.12.2012

Функциональность подстановочного знака * в 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>

посетите эту страницу

person Li3ro    schedule 29.08.2012