我遇到一种情况,我需要使用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
}
答案 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())
}