如何用Grails登录表单中的自定义处理程序替换默认成功处理程序?

时间:2020-04-08 14:20:36

标签: grails spring-security

我遇到一种情况,我需要使用Spring在Grails中用自定义的成功处理程序替换默认的成功处理程序。

默认处理程序在AbstractAuthenticationProcessingFilter中定义为SavedRequestAwareAuthenticationSuccessHandler-我需要用我的自定义成功处理程序替换它。我注意到该类中有一个setAuthenticationSuccessHandler()方法。

如何使用该方法将其设置为我的自定义方法?

在resources.groovy中,我定义了自定义成功处理程序:

authenticationSuccessHandler (CustomUserLoginSuccessHandler) {
    def conf = SpringSecurityUtils.securityConfig
    requestCache = ref('requestCache')
    redirectStrategy = ref('redirectStrategy')
    defaultTargetUrl = conf.successHandler.defaultTargetUrl
    alwaysUseDefaultTargetUrl = conf.successHandler.alwaysUseDefault
    targetUrlParameter = conf.successHandler.targetUrlParameter
    ajaxSuccessUrl = conf.successHandler.ajaxSuccessUrl
    useReferer = conf.successHandler.useReferer
}

1 个答案:

答案 0 :(得分:0)

在我的安全配置(@Configuration @EnableWebSecurity)中,我有一个定义成功处理程序的bean(大概可以将其交换为资源定义的处理程序):

@Bean
public AuthenticationSuccessHandler successHandler(){
  return new ActiveDirectoryAuthenticationHandler()
}

然后我将其添加到我的HttpSecurity中

@Override
protected void configure(HttpSecurity http) throws Exception {
  http
    // other stuff cut out to make this shorter
    .authorizeRequests()
    .anyRequest().authenticated()
    .and()
    .formLogin()
    .successHandler(successHandler())
}
相关问题