繁体   English   中英

Grails Spring安全身份验证提供程序和自定义过滤器

[英]Grails spring security authentication provider and custom filter

我是grails语言的新手,正在使用带有grails 2.5.6和spring-security-core 2.0.0插件的Grails。

我已经在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 ,并注入了AuthenticationManagerAuthenticationEntryPoint 我的提供者实现了AuthenticationProvider

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

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

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

谢谢

弄清楚了。 我最终没有定义filterNames,在我的resources.groovy文件中我有以下内容:

authenticationProcessingFilter(MyCustomFilter) {
    ...args
}

我的提供者在构建获取提供者方面的问题并不重要。 事实证明,Spring安全核心直到那之后才对其进行更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM