Grails spring 安全身份验证提供程序和自定义过滤器
Grails spring security authentication provider and custom filter
我是 grails 语言的新手,正在使用带有 spring-security-core 2.0.0 插件的 grails 2.5.6。
我在 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 时,我根本看不到我的自定义提供程序。我仍然看到默认的 spring-security-core 插件提供程序。
我也不明白为什么即使我将自定义过滤器从过滤器列表中删除,它也会启动。似乎只需在 resources.groovy
文件中定义它就足以启动它。
刚刚意识到它启动的原因是因为在启动时它被添加到 spring 容器中。
谢谢
想通了。我最终没有定义 filterNames,在我的 resources.groovy
文件中我有这个:
authenticationProcessingFilter(MyCustomFilter) {
...args
}
我的供应商在施工中获得供应商的问题并不重要。原来 spring 安全核心在那之后才改变它。
我是 grails 语言的新手,正在使用带有 spring-security-core 2.0.0 插件的 grails 2.5.6。
我在 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 时,我根本看不到我的自定义提供程序。我仍然看到默认的 spring-security-core 插件提供程序。
我也不明白为什么即使我将自定义过滤器从过滤器列表中删除,它也会启动。似乎只需在 resources.groovy
文件中定义它就足以启动它。
刚刚意识到它启动的原因是因为在启动时它被添加到 spring 容器中。
谢谢
想通了。我最终没有定义 filterNames,在我的 resources.groovy
文件中我有这个:
authenticationProcessingFilter(MyCustomFilter) {
...args
}
我的供应商在施工中获得供应商的问题并不重要。原来 spring 安全核心在那之后才改变它。