Фильтры Grails со статическими ресурсами? - PullRequest
3 голосов
/ 14 апреля 2011

Я конвертирую Java-фильтр старой школы в фильтр Grails. (Фильтр записывает доступ к определенному статическому изображению.)

Проблема в том, что я не могу получить огонь! Поддерживает ли Grails фильтры перед статическими ресурсами?

class EmailImageFilters {
    def filters = {
        emailFilter(uri: '/images/**') {
            log.info "email filter ${new Date()}"
            before = {
                return true;
            }
        }
    } 
}

Я использую плагин UIPerformance, но он не включен в режиме разработки.

Граальс 1.3.5

Я могу заставить его выстрелить, когда:

emailFilter(controller: '*', action: '*') {

но мне нужно это через статические ресурсы; например / Изображения

Предложения?

1 Ответ

10 голосов
/ 15 апреля 2011

Статические ресурсы не обслуживаются контроллером, поэтому фильтры Grails (которые являются обертками для перехватчиков контроллера Spring) не будут запускаться для запросов на них.Вам необходимо зарегистрировать фильтр сервлета в web.xml для обработки статических ресурсов.

Создать класс в src / java или src / groovy, который реализует javax.servlet.Filter, затем запустить grails install-templates и отредактировать src/templates/war/web.xml взарегистрируйте его, например,

<filter>
   <filter-name>myFilter</filter-name>
   <filter-class>com.mycompany.myapp.MyFilter</filter-class>
</filter>

<filter-mapping>
   <filter-name>myFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

Измените значение url-pattern, чтобы оно было более конкретным, если вы не хотите, чтобы оно запускалось для всех запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...