У меня есть проект Spring Boot с базой данных H2.Я сталкиваюсь с проблемой при попытке авторизации пользователя при входе в систему.
Я вставил в data.sql
следующего пользователя:
INSERT INTO USERS (`USER_ID`, `NAME`, `CITY`, `AGE`, `PASSWORD`)
VALUES (1, 'Test', 'TestCity', 25,
'$2a$10$EblZqNptyYvcLm/VwDCVAuBjzZOI7khzdyGPBr08PpIi0na624b8.');
И когда я пытаюсь войти, я получаю:
org.springframework.security.authentication.InternalAuthenticationServiceException:
PreparedStatementCallback; SQL [select user_id, name, password from USERS
where name=?
Data conversion error converting
"$2a$10$EblZqNptyYvcLm/VwDCVAuBjzZOI7khzdyGPBr08PpIi0na624b8." [22018-197]
Пароль - это зашифрованное «123456», как это делает BCryptPasswordEncoder, но я попытался использовать разные пароли, даже в виде открытого текста, с тем же результатом.
Мой SecurityConfig.java
:
@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Autowired
private DataSource dataSource;
@Value("${spring.queries.users-query}")
private String usersQuery;
@Value("${spring.queries.roles-query}")
private String rolesQuery;
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.
jdbcAuthentication()
.usersByUsernameQuery(usersQuery)
.authoritiesByUsernameQuery(rolesQuery)
.dataSource(dataSource)
.passwordEncoder(bCryptPasswordEncoder);
}
Запрос от application.properties
:
spring.queries.users-query=select user_id, name, password from USERS where name=?
Я понятия не имею, как решить эту проблему, я был бы признателен за любую помощь.