Фильтры не работают в Struts2 - PullRequest
3 голосов
/ 12 декабря 2010

по неизвестной причине я не могу использовать фильтр на стойках2. Я использую Apache Tomcat и использую фильтр для ограничения доступа пользователей (я предпочитаю, а не перехватчики). Есть ли причина, по которой мои запросы с /tela-paciente не фильтруются ??

   <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

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

    <filter>
        <filter-name>Paciente</filter-name>
        <filter-class>br.ufg.inf.sas.filtros.FiltroPaciente</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>Paciente</filter-name>
        <url-pattern>/tela-paciente</url-pattern>
    </filter-mapping>

Ответы [ 2 ]

3 голосов
/ 12 декабря 2010

Следует также помнить, что в вашем примере сопоставление для / tela-paciente происходит после сопоставления для / * (для фильтра Struts2), поэтому все запросы будут сопоставлены с Struts2, и ни один из них не перейдет в вашу безопасность.фильтр.

Помните, что порядок ваших фильтров имеет значение.:)

@ totaam: StrutsPrepareAndExecuteFilter не связывается с другими фильтрами, если:

  • URL-адрес запроса исключен из обработки свойством struts.action.excludePattern
  • Запрос не сопоставляется действию или статическому ресурсу

Поэтому, если его запрос сопоставлен действию, его фильтр безопасности не будет вызываться, если он сопоставлен после фильтра Struts2.

2 голосов
/ 12 декабря 2010

Вы пытались установить вместо сопоставления фильтра значение "/ tela-paciente / *" (<url-pattern>/tela-paciente/*</url-pattern>)?

Ваш вопрос - вопрос кота, в этом конкретном отображении нет ничего, что относится к распоркам.

Заявление Стивена Бенитеса, приведенное ниже: правильно - мое плохо («никто не попадет в ваш фильтр безопасности»).

Более общая информация о фильтрах: они обрабатываются, если один из фильтров не останавливает обработку, не вызывая цепочку фильтров (что может иметь место в данном случае - хотя это должно быть редкостью, и использоваться только при работе с исключения, при перенаправлении URL-адресов или для предотвращения загрузки страницы). Вы можете иметь столько фильтров, сколько захотите, связанных с перекрывающимися наборами URL.

...