Интеграция Spring Security с HSQLDB

Я изо всех сил пытаюсь соединить мою конфигурацию HSQLDB и Spring Security. Я использую Spring Data JPA и уже вставил некоторые данные. Как мне настроить этот метод

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth
            .inMemoryAuthentication()
            .withUser("user").password("password").roles("ADMIN");

}

связаться с моим hsqldb и получить имена пользователей, пароли и роли? Вот гитхуб


Я понял это, код, который должен быть добавлен:

 @Bean
public DataSource dataSource(){
    EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
    EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL)
            .build();
    return db;
}

и связь:

 @Autowired
public void configureGlobal(AuthenticationManagerBuilder auth, DataSource dataSource) throws Exception {      auth.jdbcAuthentication().dataSource(dataSource).usersByUsernameQuery("select u.username, u.password, 1 from User u where u.username = ?")
            .authoritiesByUsernameQuery("SELECT u.username, role.name FROM User u JOIN user_roles ON u.id = user_roles.users_Id JOIN Role on user_roles.roles_Id = role.id WHERE u.username = ? ").passwordEncoder(new BCryptPasswordEncoder());

}

1 ответ

@Autowire
private UserDetailsService userDetailsService;

Реализуйте класс UserDetailsService и overide loadUserByUsername() метод, в котором вы будете загружать детали аутентификации пользователя из вашей базы данных, используя методы репозитория (как вы используете Spring Data jpa)

@Autowire
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .userDetailsService(userDetailsService);
    }
Другие вопросы по тегам