Интеграция 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);
}