Я представляю Spring Web Security на уже существующем веб-сайте. Теперь возникла проблема:Выполнять фильтры сервлетов перед цепочкой фильтров Spring Security
Я хочу, чтобы мои настраиваемые фильтры выполнялись в цепочке фильтра Tomcat до цепи фильтра Spring Security. Я не хочу, чтобы они были частью этой цепочки фильтров Spring Security.
Все, что я нашел, это решение в Spring Boot (см. "Spring - How to insert a filter before SpringSecurityFilterChain") - но я не использую Spring Boot.
Update 22.11.2016:
Вот часть моего web.xml
- только добавляют здесь пользовательский фильтр:
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
фильтр
Весна безопасности цепи добавляется путем определения AbstractSecurityWebApplicationInitializer:
public class MySecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
...
}
Результат: фильтры безопасности Spring идут первым, и только после этого мой пользовательский фильтр.
Как это сделать?
Да, но мой фильтр Spring Security цепь не добавляется в ' web.xml '- я использую «WebSecurityConfigurerAdapter» с аннотацией @EnableWebSecurity. В «web.xml» объявлен только пользовательский фильтр. (см. обновленный вопрос). Как сделать свой собственный фильтр в этом сценарии первым фильтром? – olivmir
Он работает так, как вы его описываете! Теперь я определил и сопоставил SpringSecurityFilterChain с помощью 'web.xml' (а не как раньше с помощью' AbstractSecurityWebApplicationInitializer') и поместил свой собственный фильтр перед этим 'filter-mapping'. После этого я поставил точку останова в одном из фильтров цепочки Spring Security и теперь вижу в отладчике, что мой настраиваемый фильтр выполняется до Spring Security. Спасибо. – olivmir