2015-09-10 6 views
2

Я пытаюсь добавить настраиваемый фильтр в конфигурацию весенней безопасности. Но проблема в том, что всякий раз, когда я пытаюсь добавить фильтр с помощью XML я получаю исключение о том, чтоSpring Security custom FORM_LOGIN_FILTER не работает

«проблема конфигурации: фильтр бобов„< subdomainFilter>“и '< org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter # 1> 'имеют то же значение «порядок». При использовании настраиваемых фильтров убедитесь, что позиции не конфликтуют с фильтрами по умолчанию. В качестве альтернативы вы можете отключить фильтры по умолчанию, удалив из них соответствующие дочерние элементы и избегая использования < http auto-config = 'true'>. "

Я добавляю мою конфигурацию безопасности пружины ниже

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
      http://www.springframework.org/schema/security 
      http://www.springframework.org/schema/security/spring-security-3.2.xsd"> 

    <beans:bean id="subdomainFilter" class="com.testbudha.security.authentication.UsernamePasswordAuthenticationFilterWithSubdomain"/> 
    <http pattern="/**" auto-config='false' use-expressions='true'> 
     <custom-filter position="FORM_LOGIN_FILTER" ref="subdomainFilter" /> 
     ....... 
    </http> 
    ........ 
</beans:beans> 

ответ

0

Spring Security поддерживает цепочку фильтров, чтобы применить свои услуги. Порядок использования фильтров всегда строго соблюдается при использовании пространства имен. Когда создается контекст приложения, компоненты фильтра сортируются по коду обработки пространства имен, а стандартные фильтры Spring Security имеют псевдоним в пространстве имен и в хорошо известной позиции.

Ваш <login-form> использует фильтр с псевдонимом FORM_LOGIN_FILTER. А также вы добавляете еще один фильтр с той же позицией (position="FORM_LOGIN_FILTER" ref="subdomainFilter"). Таким образом, вы получаете сообщение об ошибке,

Попробуйте использовать

<custom-filter after="FORM_LOGIN_FILTER" ref="subdomainFilter" /> 

или

<custom-filter before="FORM_LOGIN_FILTER" ref="subdomainFilter" /> 
+0

Но мой subdomainFilter способен обрабатывать одновременно. То, что я хочу сделать, это заменить фильтр по умолчанию. –

+1

Вам нужно отключить опцию «auto-config» и вставить тег настраиваемого фильтра, чтобы заменить фильтр Spring Security по умолчанию в позиции 'FORM_LOGIN_FILTER' – Rockstar

+0

. Вы можете обновить фрагмент кода – Rockstar

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