Я новичок в языке Grails и использую Grails 2.5.6 с подключаемым модулем spring-security-core 2.0.0.
Я определил своего провайдера в файле config.groovy
:
grails.plugin.springsecurity.providerNames = [
'myCustomAuthenticationProvider',
'anonymousAuthenticationProvider',
'rememberMeAuthenticationProvider'
]
и мой фильтр как:
grails.plugin.springsecurity.filterChain.filterNames = [
'securityContextPersistenceFilter',
'myCustomFilter',
'exceptionTranslationFilter',
'anonymousAuthenticationFilter',
'filterInvocationInterceptor'
]
Мой resources.groovy
файл:
myCustomAuthenticationProvider(MyCustomAuthenticationProvider)
myCustomFilter(myCustomFilter)
И мой фильтр, и провайдер являются классами java, предоставленными jar. Фильтр расширяет OncePerRequestFilter
и содержит AuthenticationManager
и AuthenticationEntryPoint
. Мой провайдер реализует AuthenticationProvider
Проблема в том, что когда я помещаю точку отладки в свой фильтр, чтобы увидеть AuthenticationManager
и вижу `AuthenticationProviders, которые есть в его списке, я вообще не вижу своего собственного провайдера. Я по-прежнему вижу стандартные плагины-провайдеры ядра безопасности.
Я также не понимаю, почему мой пользовательский фильтр запускается, даже если я удаляю его из списка фильтров. Кажется, что достаточно просто указать его в файле resources.groovy
, чтобы его инициировали.
Только что понял, что причина его запуска в том, что при запуске он добавляется в контейнер пружины.
Спасибо