Cq5.5 zastosowanie filtru serwletu do określonej ścieżki

Pracuję nad niestandardową obsługą formularza w cq5.5 i wszystko idzie świetnie. Obecnie pracuję nad zablokowaniem niektórych zabezpieczeń, a jednym z moich zadań jest zaimplementowanie filtru ograniczania żądań w ścieżce obsługi formularzy.

Obecnie mam coś takiego

@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
  }
}

Działa to dobrze, ale chciałbym go zablokować, aby działał tylko na określonej ścieżce.

dzięki za wszelkie spostrzeżenia.

---- EDIT ----- Po wykonaniu dalszych badań znalazłem kilka postów stwierdzających, że nie ma sposobu, aby zarejestrować filtr na określoną ścieżkę dla domyślnego modułu obsługi ServletFilter. Zasadniczo dwa rozwiązania tego problemu, które znalazłem, to utworzenie nowego pakietu OSGI dla filtra i zarejestrowanie go za pomocą usługi ExtHTTPService lub Whiteboard:

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

LUB

Odfiltruj adres URL w samym filtrze. Więc zasadniczo dodaj sprawdzanie określonej ścieżki w moim filtrze.

to znaczy:

  @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
      }
  }

Chciałbym zobaczyć, czy istnieją dodatkowe rozwiązania tego problemu, ale chciałem podzielić się tym, co udało mi się znaleźć do tej pory, w nadziei, że pomoże to albo pobudzić więcej pomysłów, albo nawet pomoże komuś z tym samym problemem uratować trochę czas na wyszukiwanie google.

dziękuję, Brodie

questionAnswers(2)

yourAnswerToTheQuestion