Ограничьте доступ к сервлету на основе источника запроса с Jetty 6 - PullRequest
0 голосов
/ 08 марта 2012

У меня сервер Jetty 6, настроенный программно (без XML), который имеет несколько сервлетов. Я хотел бы ограничить доступ одного из этих сервлетов к запросам, поступающим от "localhost".

Существует ли уже существующий фильтр Jetty, который я могу использовать для этого?

Если нет, как я могу создать свой собственный фильтр для этого?

Текущий код:

Server server = new Server(httpPort);
Context ctx = new Context(server, "/");
ctx.addServlet(new ServletHolder(someHttpServlet), "/servlet1/*");
ctx.addServlet(new ServletHolder(someOtherHttpServlet), "/servlet2/*");
ctx.addFilter(new FilterHolder(myFilterHere), "/servlet2/*", Context.ALL);

1 Ответ

1 голос
/ 08 марта 2012

Если вы хотите сделать это так, как вы указали, то вам, вероятно, нужно написать свой собственный фильтр и посмотреть на request.getRemoteAddr()

Однако, может быть проще запустить два Server экземпляры в одной и той же JVM, и один из них прослушивает только localhost. В этой документации показано, как это сделать с помощью конфигурации XML, это довольно легко перевести на прямую настройку Java.

Для этого требуется запустить Jetty на двух разных портах, но это может быть вам подходит?Или вы можете скрыть это, используя правила iptables, если вы работаете в Linux (или эквивалент в других Unix-подобных операционных системах)

...