Конечно, контейнер сервлета вызывает MyFilter.doFilter
- в конце концов, это точка входа в фильтр.
В вашем конкретном случае предполагается, что контейнер сервлета вызывает doFilter()
on AbstractAuthenticationProcessingFilter , а не MyFilter
.
AbstractAuthenticationProcessingFilter.doFilter()
, в свою очередь, отвечает за вызов MyFilter.attemptAuthentication()
.
Если это не так, возможно Вы преодолели doFilter()
в MyFilter
?Если да, лучше уберите это (или хотя бы позвоните super.doFilter()
).См. JavaDocs AbstractAuthenticationProcessingFilter для получения дополнительной информации.
EDIT : MinimeDJ пояснил, что все так, как я предлагаю выше.В этом случае я предлагаю проверить значение filterProcessesUrl
свойства.От JavaDocs :
Этот фильтр будет перехватывать запрос и пытаться выполнить аутентификацию из этого запроса , если URL-адрес запроса соответствует значению свойства filterProcessesUrl ,Это поведение можно изменить, переопределив метод requireAuthentication.
Так что вы можете:
- либо установить соответствующее значение
filterProcessesUrl
(обычно что-то вроде /j_spring_security_check
) - или вы можете переопределить метод
requiresAuthentication
, чтобы всегда возвращать true
.
Если у вас все еще есть проблемы, тогда я предлагаю вам взять отладчик и пройти через Spring-Security (и ваш) код, чтобы увидеть, где именно возникает проблема.