Как заменить обработчик успеха по умолчанию на собственный обработчик из формы входа Grails? - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть ситуация, когда мне нужно заменить обработчик успеха по умолчанию на собственный в Grails с использованием Spring.

Обработчик по умолчанию определен в AbstractAuthenticationProcessingFilter как SavedRequestAwareAuthenticationSuccessHandler - мне нужно заменить его своим собственным обработчиком успеха. Я заметил, что в этом классе есть метод setAuthenticationSuccessHandler ().

Как мне использовать этот метод, чтобы установить его на свой собственный?

В ресурсах. 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 голосов
/ 08 апреля 2020

В моей конфигурации безопасности (@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())
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...