Отключаем воду

2001060801_02

С помощью вентилей также можно управлять доступом. Например, вентиль фильтра удаленного адреса позволяет управлять доступом на основе IP-адреса клиента. Для публичного web сервера это не слишком полезно, потому что IP-адрес клиента ничего не говорит о том, что представляет собой клиент. Но это может пригодиться, если вы хотите скрыть контент или ограничить доступ к приложениям, заданным внутренним IP-сетям.
Вот пример фильтра удаленного адреса, который в этом случае разрешает доступ только с локального компьютера:
<Valve className=”org.apache.catalina.valves.RemoteAddrValve” allow=”127.0.0.1 ” />
Также существуют вентили фильтра удаленного хоста, ограничивающие доступ на основе имени хоста клиента. Например: <Valve className=”org.apache.catalina.valves.RemoteHostValve” allow=”goodguys.com” />
Но учтите, что такой фильтр заставляет Tomcat выполнять обратное преобразование DNS для IP-адреса клиента, и это может замедлить все дело. Или вообще остановить. В любом случае, многие браузеры эффективно скрываются за публичными IP-адресами, предоставляемыми их провайдерами, поэтому доменное имя не скажет вам о клиенте почти ничего.
Также есть вентиль единого входа, который пригодится, если нескольким связанным друг с другом web приложениям необходима аутентификация, но вы не хотите мучить пользователя, заставляя его заходить в каждое отдельно. Этот вентиль кэширует данные входа (имена пользователей и пароли) на сервере и автоматически подставляет их при доступе к защищенному ресурсу. Он создается так:
<Valve className=”org.apache.catalina.authenticator. SingleSignOn” />
Наконец, существуют вентили вывода запроса (удобно для отладки) — они выводят заголовки и содержимое куки для всех запросов и ответов, которые могут очень пригодиться для отладки.
Помните, что область действия всех этих вентилей (т. е. применяются ли они ко всему сервису, к одному виртуальному хосту или только к одному приложению) зависит от их расположения в иерархии конфигурационного файла.