H2 Spring security Data Conversion Ошибка преобразования пароля - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть проект 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=?

Я понятия не имею, как решить эту проблему, я был бы признателен за любую помощь.

...