Cq5.5 применяет фильтр сервлета к определенному пути

Я работаю над обработчиком пользовательских форм в cq5.5, и все идет отлично. Я'Сейчас я работаю над блокировкой некоторых функций безопасности, и одна из моих задач - реализовать фильтр регулирования запросов для пути обработчиков форм.

В настоящее время у меня есть что-то вроде

@Component(immediate = true, metatype = true)

@Service(javax.servlet.Filter.class)

@Properties({
  @Property(name="service.pid", value="com.xxxxxx.cq.core.filter.FormFilter",propertyPrivate=false),
  @Property(name="service.description",value="FormFilter", propertyPrivate=false),
  @Property(name="service.vendor",value="xxxxxx - Microsites", propertyPrivate=false),
  @Property(name = "filter.scope", value = "request"),
  @Property(name = "sling.filter.scope", value = "request"),
  @Property(name = "service.ranking", intValue = 100001)
})

public class FormFilter implements javax.servlet.Filter {
  private Logger LOGGER = LoggerFactory.getLogger(TrackingFilter.class.getName());
  private static final Object lock = new Object();

  @Override
  public void doFilter(ServletRequest pRequest, ServletResponse pResponse, FilterChain pChain) throws IOException, ServletException {
      //my filter stuff
  }
}

Это хорошо работает, но яЯ хотел бы заблокировать его, чтобы работать только по определенному пути.

спасибо за любые идеи.

---- РЕДАКТИРОВАТЬ ----- После проведения дополнительных исследований я обнаружил несколько сообщений о том, что невозможно зарегистрировать фильтр по указанному пути для обработчика ServletFilter по умолчанию. В основном два решения этой проблемы ямы обнаружили, что создаем новый пакет OSGI для фильтра и регистрируем его с помощью ExtHTTPService или Whiteboard:

http://felix.apache.org/documentation/subprojects/apache-felix-http-service.html

ИЛИ ЖЕ

Отфильтруйте URL в самом фильтре. Поэтому в основном добавьте проверку для указанного пути в моем фильтре.

то есть:

  @Override
  public void doFilter(ServletRequest pRequest, ServletResponse pResponse, FilterChain pChain) throws IOException, ServletException {

      String path = pRequest.getContextPath();

      if (path.contains("my/matching/path")
      {
        //my filter stuff
      }
  }

Я хотел бы посмотреть, есть ли дополнительные решения этой проблемы, но хотел бы поделиться тем, что яМы смогли найти его до сих пор, надеясь, что это поможет либо стимулировать новые идеи, либо даже просто поможет кому-то с той же проблемой сэкономить время на поиске в Google.

спасибо, Броди

Ответы на вопрос(2)

Ваш ответ на вопрос