Разница между переопределением метода configure (AuthentiationManageraBuilder) и простым созданием DaoAuthenticationProvider - PullRequest
0 голосов
/ 29 марта 2020

Я пробую Spring Security Authentication с использованием JPA. и я наткнулся на два канала YouTube (Java Мозги) и (Telusko). Java Мозг переопределил метод configure (AuthenticationManagerBuilder Auth) из WebSecurityConfigurer, а парень Telusko использовал компонент для настройки DaoAuthenticationProvider для настройки userDetailService. Я знаю, что authenticationManager вызывает authenticationProvider, который inturn вызывает userDetailService для загрузки пользователей. поправьте если я ошибаюсь Может кто-нибудь объяснить, в чем разница между этими двумя подходами под капотом. Заранее спасибо.

1 Ответ

0 голосов
/ 30 марта 2020

Разница заключается в одном способе аутентификации (DaoAuthenticationProvider) по сравнению с открытием большего количества вариантов (AuthenticationManagerBuilder). Настройка DaoAuthenticationProvider означает, что вы выбираете «Dao» / «userDetailService» для аутентификации ваших пользователей. Spring Security использует Authentication Manager для аутентификации, а ProviderManager является менеджером аутентификации по умолчанию, который выполняет запрос аутентификации через список AuthenticationProviders. И DaoAuthenticationProvider является одним из них.

Конфигурируя менеджер аутентификации с помощью метода: configure (AuthenticationManagerBuilder Auth) У вас больше гибкости, вы можете настроить менеджер аутентификации для использования вашего настроенного провайдера аутентификации. (и вы CustomAuthenticationProvider реализует интерфейс AuthenticationProvider)

    @Autowired
    private CustomAuthenticationProvider customAuthProvider;

    @Override
    public void configure(AuthenticationManagerBuilder auth)  {
        auth.authenticationProvider(customAuthProvider);
    }

И вы также можете настроить DaoAuthenticationProvider, просто предоставив userdetailservice, так как AuthenticationManagerBuilder подключит его.

    @Autowired
    private CustomUserDetailsService userDetailsService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
    }

с этим сказанным использование AuthenticationManagerBuilder встречается гораздо чаще, поскольку его можно использовать для настройки различных типов поставщиков аутентификации.

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