【发布时间】:2018-12-09 17:27:39
【问题描述】:
我是 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)
我的过滤器和提供者都是 jar 提供的 java 类。过滤器扩展OncePerRequestFilter 并注入AuthenticationManager 和AuthenticationEntryPoint。我的提供者实现了AuthenticationProvider
问题是当我在过滤器中放置一个调试点以查看AuthenticationManager 并查看列表中的`AuthenticationProviders 时,我根本看不到我的自定义提供程序。我仍然看到默认的 spring-security-core 插件提供程序。
我也不明白为什么我的自定义过滤器会启动,即使我将其从过滤器列表中删除。似乎只需在 resources.groovy 文件中定义它就足以启动它。
刚刚意识到它被启动的原因是因为在启动时它被添加到弹簧容器中。
谢谢
【问题讨论】:
标签: java spring grails groovy spring-security