【问题标题】:Grails 3.2.4 : custom authentication filter not calledGrails 3.2.4:未调用自定义身份验证过滤器
【发布时间】:2017-06-14 14:12:18
【问题描述】:

从 grails 2.5 升级到 grails 3.x 时,不会触发用户名密码身份验证过滤器。

我正在使用 spring-security 核心插件 3.1.1

这就是自定义过滤器的样子

    class CustomAuthenticationFilter extends UsernamePasswordAuthenticationFilter {
  @Override
  protected String obtainUsername(HttpServletRequest request) {
    return (new CustomPrincipal(request.getParameter('company'), request.getParameter('username'))).toString()
  }
  @Override
  protected String obtainPassword(HttpServletRequest request) {
    return request.getParameter('password')
  }
   }

application.groovy

grails.plugin.springsecurity.filterChain.filterNames = [
    'securityContextPersistenceFilter',
    'logoutFilter',
    'customAuthenticationFilter',   
    'rememberMeAuthenticationFilter',
    'anonymousAuthenticationFilter',
    'exceptionTranslationFilter',
    'filterInvocationInterceptor'
]

resources.grrovy

customAuthenticationFilter(CustomAuthenticationFilter) {
    authenticationManager = ref('authenticationManager')
    sessionAuthenticationStrategy = ref('sessionAuthenticationStrategy')
    authenticationFailureHandler = ref('internalAuthenticationFailureHandler')
  }

【问题讨论】:

    标签: grails spring-boot spring-security grails-plugin grails3


    【解决方案1】:

    filterNames map要定义如下:

    **grails.plugin.springsecurity.filterChain.filterNames**= [  
        **pattern**:'/**',
        **filters**:'securityContextPersistenceFilter',
        'logoutFilter',
        'customAuthenticationFilter',
        'rememberMeAuthenticationFilter',
        'anonymousAuthenticationFilter',
        'exceptionTranslationFilter',
        'filterInvocationInterceptor'
    ]
    

    【讨论】:

      猜你喜欢
      • 2019-02-09
      • 2014-03-03
      • 2016-12-11
      • 2020-02-14
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      相关资源
      最近更新 更多