Servlet-фильтры

В этой статье вы узнаете, как создать и настроить фильтр в DС CMS.

Создание и настройка фильтра

Фильтр DC CMS - это контроллер на основе Groovy, который позволяет перехватывать входящие запросы на контент и ответы API. Он позволяет динамически применять правила, модифицировать запросы и трансформировать ответы. Важно отметить, что фильтр DC CMS использует тот же интерфейс и механику, что и фильтр Java J2EE Servlet.

Шаг 1: Создание контроллера

Начнем с создания контроллера, который выводит сообщение перед обработкой запроса (или последующих фильтров в цепочке) и другое сообщение после возврата управления фильтру.

Ниже расположен необходимый код:

logger.info("Handling the request")
filterChain.doFilter(request, response)
logger.info("Control returned to filter/controller")

Copy-icon

Здесь ключевым аспектом является возможность вставлять код до и после операции doFilter. Этот код может включать в себя различные действия, такие как анализ запросов, принятие решений, модификация запросов для последующей обработки или оборачивание объекта ответа.

Шаг 2: Установка фильтра в CMS

Перейдите в раздел Скрипты в боковой панели и откройте папку с именем scripts. Щелкните правой кнопкой мыши по папке scripts и выберите Новая папка. Назовите новую папку filters. Щелкните правой кнопкой мыши по только что созданной папке filters и выберите Новый контроллер.

Изображение статьи

Назовите контроллер MyFilter и нажмите на Создать.

Изображение статьи

Вставьте код из Шага 1 и нажмите на Сохранить и закрыть.

Изображение статьи

После этого вы сможете увидеть свой фильтр в боковой панели в разделе "Скрипты", и теперь можно приступать к его настройке для запуска, когда пользователь будет запрашивать ресурс.

Шаг 3: Настройка выполнения фильтра

Теперь нужно сообщите фильтру о ресурсах, для которых он должен выполняться, настроив порядок выполнения, шаблоны URL-ресурсов и применяемые типы методов запросов.

Для этого в боковой панели перейдите по пути Инструменты сайта > Конфигурация > Конфигурация ядра проекта.

Изображение статьи

Добавьте следующие теги фильтра в ваш site.xml, что настроит ваш фильтр для выполнения на всех типах запросов для всех URL:

<?xml version="1.0" encoding="UTF-8"?>
<site>
    <filters>
        <filter>
            <script>/scripts/filters/MyFilter.groovy</script>
            <mapping>
                <include>/**</include>
            </mapping>
        </filter>
    </filters>
</site>

Copy-icon

После обновления конфигурации нужно перезагрузить CMS Engine. Для этого выполните API: http://localhost:8080/studio/preview/#/?page=/api/1/site/context/rebuild.json.

Шаг 4: Тестирование

Учитывая, что наш пример выводит сообщения в логах, вам нужно будет отслеживать логи, которые расположены по адресу INSTALL_DIRECTORY/logs/tomcat/catalina.out.

В консоли следите за логами, выводя сообщения по мере их добавления:
tail -f ./logs/tomcat/catalina.out.

Просто обновите страницу: http://localhost:8080/studio/preview/#/?page=/.

После этого вы должны видеть записи в логах каждый раз, когда вы просматриваете страницу или получаете доступ к любому другому ресурсу. Записи в логах будут выглядеть подобным образом:

[INFO] 2023-06-19T11:26:57,991 [http-nio-8080-exec-7] [examplecom] [impl.GroovyScript] [/scripts/filters/MyFilter.groovy] | Handling the request
[INFO] 2023-06-19T11:26:58,012 [http-nio-8080-exec-7] [examplecom] [impl.GroovyScript] [/scripts/filters/MyFilter.groovy] | Control returned to filter/controller

Copy-icon