Если вы хотите использовать свою собственную базу данных для аутентификации, вы можете использовать интерфейс UserDetailsService, который используется для поиска имени пользователя, пароля и GrantedAuthorities для любого данного пользователя.
Этот интерфейс предоставляет только один метод, который должен реализовывать реализующий класс:
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
- Создайте класс, который реализует этот интерфейс, и переопределите вышеуказанный метод для получения сведений о пользователе из вашей БД (аннотируйте этот класс с помощью аннотации @Service) Здесь вы можете вызвать вашу БД, чтобы получить информацию о пользователях, указав userName, и преобразовать ее в UserDetails.
- Создать собственный класс MyUserdetails, который реализует интерфейс UserDetails. И реализуйте все необходимые методы.
- Теперь создайте класс, скажем SecurityConfiguration, который расширяет WebSecurityConfigurerAdapter, аннотирует этот класс с помощью @EnableWebSecurity. (@EnableWebSecurity - это аннотация маркера. Она позволяет Spring находить (это @Configuration и, следовательно, поэтому , @Component) и автоматически применять класс к глобальной WebSecurity.) В этом классе autowire bean-компонент UserDetailsService и переопределить следующий метод для получения сведений о пользователях из вашей БД.
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
Добавить следующую зависимость в вашу пом. xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Также аннотируйте свой основной класс следующей аннотацией, чтобы сообщить Spring, что вы используете JPA
@EnableJpaRepositories(basePackageClasses = UserRepository.class)
Надеюсь, это поможет.