Я выполнил свою собственную LowerCaseUsernamePasswordAuthenticationFilter
, что это просто подкласс UsernamePasswordAuthenticationFilter
.
Но теперь моя проблема заключается в том, как настроить Spring security для использования этого фильтра.
До сих пор я использовал:
<security:http auto-config="true" use-expressions="true">
<security:form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" authentication-failure-url="/login?login_error=t" />
<security:logout logout-url="/resources/j_spring_security_logout" />
<security:intercept-url pattern="/**" access="isAuthenticated()" requires-channel="${cfma.security.channel}" />
</security:http>
Действительно ли я хочу включить auto-config
и настроить все фильтры вручную? - Если это правда, может ли кто-нибудь подать пример, пожалуйста?
Способ добавления просто security:custom-filter
:
<security:http ...>
<security:form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" authentication-failure-url="/login?login_error=t" />
<security:custom-filter ref="lowerCaseUsernamePasswordAuthenticationFilter" position="FORM_LOGIN_FILTER"/>
...
</security:http>
приводит к исключению из этого сообщения:
Проблема с конфигурацией: Фильтрующие компоненты
<lowerCaseUsernamePasswordAuthenticationFilter>
и "Корневой компонент: класс [org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter]; Объем =; абстрактные = ложь; lazyInit = ложь; autowireMode = 0; dependencyCheck = 0; autowireCandidate = TRUE; первичные = ложь; factoryBeanName = NULL; factoryMethodName = NULL; initMethodName = NULL; destroyMethodName = null 'имеют одинаковое значение "порядок". При использовании пользовательских фильтров убедитесь, что позиции не конфликтуют с фильтрами по умолчанию. Кроме того, вы можете отключить фильтры по умолчанию, удалив из него соответствующие дочерние элементы и избегая их использования.