2016-07-02 3 views
1

Я пишу веб-приложение в Spring Boot, у которого есть фильтр, который должен выполнить после фильтров безопасности Spring.Spring Boot filter order: WebLogic 12c vs Tomcat 8

Я сконфигурировал цепочку фильтров через конфигурацию java и установил порядок моего пользовательского фильтра на значение, большее, чем весенняя безопасность. Это работает, как и ожидалось, при запуске приложения на Tomcat; однако это не работает в WebLogic 12c. WebLogic выполняет цепочку фильтров в обратном порядке, как Tomcat выполняет ее (и/или наоборот).

С кем-либо сталкивался этот особенный причуд? Есть ли способ заставить WebLogic вести себя так, как это делает Tomcat?

Мой код:

final FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter()); 
registration.setOrder(-99); // spring security's is -100 

На сервере Tomcat это MyFilter пожары после фильтров безопасности. В WebLogic MyFilter срабатывает перед фильтрами безопасности. Если я изменил значение setOrder на -101, скажем, тогда он будет работать для WebLogic, но не для Tomcat.

Я хотел бы запустить приложение на обоих серверах приложений, в зависимости от контекста, поэтому мне нужно выяснить, как это сделать.

+0

Я думаю, что видел это раньше, и это оказалось ошибкой в ​​Weblogic –

ответ

5

В WebLogic есть ошибка: «20493506: WLS 12.1.2 - Servlet 3 addFilter добавляет фильтры в неправильном порядке».

Команда Spring Boot была made aware of this более года назад. К сожалению, нет ничего, что могла бы сделать Spring Boot. Надеемся, что 15 месяцев плюс достаточно для того, чтобы Oracle отправила исправление, которое вы можете применить к своей установке Weblogic.

+0

Спасибо. https://support.oracle.com/epmos/faces/DocContentDisplay?id=1996257.1, для всех, у кого есть учетная запись поддержки oracle. – user636747

0

Не уверен, что патч доступен, или наша команда ops не применила его, но он все еще сломан для нас. This - это решение, с которым я столкнулся.

Смежные вопросы