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 并注入了 AuthenticationManagerAuthenticationEntryPoint。我的提供者实施 AuthenticationProvider

问题是当我在我的过滤器中放置一个调试点以查看 AuthenticationManager 并查看其列表中的 `AuthenticationProviders 时,我根本看不到我的自定义提供程序。我仍然看到默认的 spring-security-core 插件提供程序。

我也不明白为什么即使我将自定义过滤器从过滤器列表中删除,它也会启动。似乎只需在 resources.groovy 文件中定义它就足以启动它。

刚刚意识到它启动的原因是因为在启动时它被添加到 spring 容器中。

谢谢

想通了。我最终没有定义 filterNames,在我的 resources.groovy 文件中我有这个:

authenticationProcessingFilter(MyCustomFilter) {
    ...args
}

我的供应商在施工中获得供应商的问题并不重要。原来 spring 安全核心在那之后才改变它。