Фильтр удаленного адреса Tomcat не работает

Кажется, у меня есть проблема, которая кажется простой, но я не могу найти решение, хотя подобные темы открыты. Что ж, я хочу запретить доступ к URL-адресу, содержащему PDF-файл: attica.unipi.gr:8080/xmlui/bitstream/handle/123456789/5/a3iologisi%20genika.pdf?sequence=1

Имейте в виду, что это не сплошной URL-адрес, а эта его часть --> /123456789/5/a3iologisi%20genika.pdf?sequence=1 генерируется динамически, в зависимости от того, какой PDF-файл щелкает пользователь, чтобы просмотреть.

Итак, исходя из этого: http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_Filter я пробовал это:

<filter>
  <filter-name>Remote Address Filter</filter-name>
  <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
  <init-param>
    <param-name>deny</param-name>
    <param-value>127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Remote Address Filter</filter-name>
  <url-pattern>/xmlui/bitstream/handle/*/*/*</url-pattern>
</filter-mapping>

Но все еще не работает. Я считаю, что это проблема с шаблоном URL-адреса, поэтому я попытался изменить шаблон как

/xmlui/bitstream/handle/*/*/*pdf

or

/attica.unipi.gr:8080/xmlui/bitstream/handle/*/*/*

Но все равно не повезло. Он либо ограничивает доступ ко всему сайту, либо вообще ничего не делает.

Какие-либо предложения?

Спасибо !!


person Al dimario    schedule 02.10.2013    source источник


Ответы (1)


Вам нужно прочитать спецификацию сервлета, чтобы узнать, что представляет собой допустимый шаблон URL. Короткая версия заключается в том, что они должны либо заканчиваться подстановочным знаком (например, <url-pattern>/foo/bar/*</url-pattern>), либо начинаться с единицы (<url-pattern>*.jsp</url-pattern>).

Если все, что вы хотите сделать, это сопоставить любой файл с расширением pdf, тогда <url-pattern>*.pdf</url-pattern> — это то, что вам нужно. Tomcat (или любой другой контейнер сервлетов) будет игнорировать параметры запроса при сопоставлении с шаблоном URL.

Кроме того, в шаблоне URL не должны отображаться ни протокол, ни имя хоста, ни порт, ни контекстный путь.

person Mark Thomas    schedule 02.10.2013
comment
Спасибо за ответ . Я также попробовал шаблон расширения ‹url-pattern›*.pdf‹/url-pattern›, но ничего не произошло. - person Al dimario; 03.10.2013