Реализация UserDetailsChecker для переопределения метода isAccountNotLocked - PullRequest
0 голосов
/ 21 февраля 2019

Я использую реализацию UserDetails для аутентификации, которая имеет методы

@Override
public boolean isAccountNonExpired() {
    return true;
}

@Override
public boolean isAccountNonLocked() {
    return true;
}

@Override
public boolean isCredentialsNonExpired() {
    return true;
}

@Override
public boolean isEnabled() {
    return true;
}

Если я установил isAccountNonLocked () для возврата false, я больше не смогу войти в систему.Как я могу реализовать свой собственный UserDetailsChecker для переопределения исключений, генерируемых при проверках, и куда я помещаю свой пользовательский UserDetailsChecker, потому что я не уверен, как работают эти проверки перед проверкой подлинности.

1 Ответ

0 голосов
/ 21 февраля 2019

Если у вас есть пользовательский UserDetailsChecker, вы подключите его при настройке AuthenticationManager:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(dao());
    }

    AuthenticationProvider dao() {
         DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
         provider.setPreAuthenticationChecks(new MyUserDetailsChecker());
         return provider;
    }

    @Bean
    public UserDetailsService userDetailsService() {
        // ... expose a UserDetailsService
    }
}

Обратите внимание, что вы, возможно, уже публикуете UserDetailsService другим способом, но яЯ включил его здесь как напоминание о том, что провайдеру аутентификации нужен один для работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...