【问题标题】:Grails spring security authentication provider and custom filterGrails Spring 安全认证提供程序和自定义过滤器
【发布时间】: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 并注入AuthenticationManagerAuthenticationEntryPoint。我的提供者实现了AuthenticationProvider

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

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

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

谢谢

【问题讨论】:

    标签: java spring grails groovy spring-security


    【解决方案1】:

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

    authenticationProcessingFilter(MyCustomFilter) {
        ...args
    }
    

    我的供应商在获得供应商方面的建设问题并不重要。原来 spring security core 在那之后才改变它。

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 2012-04-05
      • 2011-02-25
      • 1970-01-01
      • 2011-05-07
      • 2014-10-30
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      相关资源
      最近更新 更多